如何防止CALayer重绘为绑定更改?

时间:2010-11-07 16:31:36

标签: cocoa core-animation calayer

我有一个带有自定义绘图方法的CALayer我添加到我视图的基础层。我将needsDisplayOnBoundsChange设置为NO。但是,当我调整父视图的框架大小时,图层的drawInContext:将被连续调用。我想在调整大小时调整内容。有线索吗?

1 个答案:

答案 0 :(得分:1)

有趣的是,我有一个案例,我有一个CALayer正确缩放其内容,直到我调用setNeedsDisplay重绘其内容。可能有所不同的一点是,在我的情况下,图层是由其委托绘制的,而不是由CALayer的子类绘制的。另一件可能不同的是,这是在iOS而不是OSX(我不知道你在这种情况下使用的是什么)。子类和委托绘制的图层和/或iOS和OSX之间可能存在行为差异。

另外需要注意的是,缺省情况下,needsDisplayOnBoundsChange被记录为NO,因此不需要设置它。我没有在我的图层上专门设置needsDisplayOnBoundsChange。

您可以尝试使用委托进行绘图,看看是否有所作为。请注意,UIView不能是CALayer的委托。在我的例子中,我创建了一个简单的委托对象,将绘制调用转发给我的视图。