Cocoa 如何防止CALayer在其边界更改时重新绘制?

Cocoa 如何防止CALayer在其边界更改时重新绘制?,cocoa,core-animation,calayer,Cocoa,Core Animation,Calayer,我有一个CALayer,其中有一个自定义绘制方法,我已经添加到视图的基础层。我将NeedsDisplaynBoundsChange设置为NO。但是,当我调整父视图框架的大小时,该层的drawInContext:会不断被调用。我希望内容在调整大小时进行缩放。有什么线索吗?有趣的是,我有一个例子,我有一个CALayer,它可以正确地缩放它的内容,直到我调用setNeedsDisplay来重画它的内容。可能不同的是,在我的例子中,层是由其委托绘制的,而不是由CALayer的子类绘制的。另一件可能不同的

我有一个CALayer,其中有一个自定义绘制方法,我已经添加到视图的基础层。我将NeedsDisplaynBoundsChange设置为NO。但是,当我调整父视图框架的大小时,该层的drawInContext:会不断被调用。我希望内容在调整大小时进行缩放。有什么线索吗?

有趣的是,我有一个例子,我有一个CALayer,它可以正确地缩放它的内容,直到我调用setNeedsDisplay来重画它的内容。可能不同的是,在我的例子中,层是由其委托绘制的,而不是由CALayer的子类绘制的。另一件可能不同的事情是,这是在iOS上,而不是在OSX上(我不知道您在本例中使用的是哪个)。子类和委托绘制的层和/或iOS和OSX之间可能存在行为差异

另一件需要注意的事情是,默认情况下,needsDisplaynBoundSchange被记录为NO,因此不需要设置它。我没有在我的图层上专门设置需要显示边界设置

您可以尝试使用代理绘制图形,看看这是否会产生影响。请注意,UIView不能是CALayer的委托。在我的例子中,我创建了一个简单的委托对象,它将draw调用转发到我的视图