【问题标题】:How do I prevent a CALayer from redrawing as its bound change?如何防止 CALayer 在其绑定更改时重绘?
【发布时间】:2011-05-06 08:07:48
【问题描述】:

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

【问题讨论】:

    标签: cocoa core-animation calayer


    【解决方案1】:

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

    需要注意的另一件事是,needsDisplayOnBoundsChange 被记录为默认为 NO,因此不需要设置它。我没有在我的图层上专门设置 needsDisplayOnBoundsChange。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 2012-10-06
      相关资源
      最近更新 更多