cocoa - 如何将 View 连接到图形上下文?

标签 cocoa cocoa-touch xcode

我是 XCode 的新手,所以我一直在攀登 Quartz2D 的学习曲线。据我所知,只要需要刷新 View 图形,就会调用 View 的drawRect方法,并且setNeedsDisplay方法会激活重绘。

但是我找不到图形上下文和特定 View 之间关系的明确解释。图形上下文本身显然不是 View 的实例变量,因此如果我想修改 View ,并使用 CGContext... 方法创建一个复杂的路径,需要什么代码才能将该图形上下文与 View 结合起来想改变吗?

预先感谢您对此问题的任何指导。

jrdoner

最佳答案

您可以创建图形上下文,但只有在复杂的绘图操作中才需要它。在大多数情况下,它已经为您完成了。您只需要通过调用 UIGraphicsGetCurrentContext() 获取上下文即可.

当框架确定某个 View 需要重绘时(出于各种原因,其中之一是您通过调用 setNeedsDisplay: 来指示它),它将为该 View 生成(或恢复)图形上下文,并使其成为调用之前的当前上下文 -drawRect: 。然后你的工作就是在你所提供的背景下进行绘制。之后,框架的问题是剪辑生成的上下文,将其与其他上下文混合,最后将其绘制到屏幕内存中。

要小心,不要在 -drawRect: 中进行太多复杂的绘图。如果你能帮忙的话。 iPhone 的 CPU 不如台式机强大,建议您使用图像而不是路径来完成大部分绘图工作。苹果甚至从 Mac 上删除了许多更方便的绘图包装器,几乎是故意阻止开发人员过多使用 Core Graphics。

关于cocoa - 如何将 View 连接到图形上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/905169/

相关文章:

ios - 在 DispatchQueue.main.async 中完成某些处理后,更新 UI 控件会出现滞后

objective-c - - [NSTextField 数据使用编码 :allowLossyConversion:] unrecognised selector sent to instance

iphone - 应用程序只对肖像启用,但 UIImagePickerController 在 iOS6 中旋转

iphone - 从其 contentViewController 中关闭 UIPopoverController?

ios - AppDelegate 文件在哪里适合 MVC?

ios - 多个产品的证书和配置文件组织

objective-c - 获取字体的最大高度

iphone - 在事件处理程序中获取 UIButton 的标题

macos - 如何为 OSX 创建单行文本输入字段?

ios - ios录制视频时如何检测设备的移动速度