ios - 如何使用 Quartz 2D 绘制到我的 ViewController

标签 ios iphone quartz-graphics

这是一个初学者级别的问题。我继承了一个 iOS 项目,它是通过一些具有关联 XIB 文件的 ViewController 来实现的。 XIB 文件包含由 ViewController 中的代码控制的各种小部件(我认为这是构建应用程序的标准方法)。

但是,我需要在小部件之间进行一些自定义绘图(矩形、线条、圆形、文本),并且我想使用 Quartz 2D 库来执行此操作。我从未使用过 Quartz2D,而且我找到的大多数示例代码都是以 View 为中心,而不是 ViewController。

大部分似乎与实现 View 的“drawRect”方法有关。但是,据我所知,我的 ViewController 没有“drawRect”函数。有没有办法在我的 ViewController 或它控制的任何 View 上实现“drawRect”函数?

*** 附录: 我已经研究并提醒自己,可操作的 UIView 是 UIViewController 的一个属性,而且 UIView 似乎是由应用程序自动创建的,并与我的 XIB 和 ViewController 捆绑在一起(我想我们在创建时选择了“也创建 XIB”一个 ViewController,所以 UIView 是隐含的?)。我不知道这个默认的 UIView 实例化发生在哪里。但我认为绘制它的方法是对其进行子类化?

如果是这样,最干净的方法是什么来继承此 UIView 并访问 drawRect,同时保持与现有 ViewController 和 XIB(或 Storyboard )的连接?我继承了该项目,并且此更改需要影响较小。


感谢您的帮助/想法。

最佳答案

创建 UIView 的子类并覆盖 -drawRect: 来执行自定义绘图。在 xib 中,选择 View Controller 的 View ,转到 Identity Inspector(Xcode 右侧边栏中的第三个选项卡),然后将 UIView 替换为您的自定义子类。

XCode screenshot

关于ios - 如何使用 Quartz 2D 绘制到我的 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417151/

相关文章:

ios - 在封闭路径上绘制 CGGradient

ios - Swift:如何在 tableView 中滚动时停止滚动,然后在最后一个 tableView 项目之后继续滚动?

iphone - 在 Swift 中将数据从 Apple Watch 传输到 iPhone

ios - 添加了 App Transport Security,仍然报错

iphone - 导致奇怪路径的角度

iPhone iOS : How to dynamically move around/resize images on top of an image background?

ios - 剪裁当前上下文,使其被路径掩盖

ios - NSTemporaryDirectory 或 documentDirectory : Which one is safest to store data?

ios - 表格 View 单元格的自动大小似乎在标准 UIViewController 类中不起作用

ios - 从 iOS8 自定义键盘启动包含应用程序