我是 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/