gpt4 book ai didi

cocoa - 如何防止 CALayer 在其绑定(bind)更改时重新绘制?

转载 作者:行者123 更新时间:2023-12-03 18:03:36 24 4
gpt4 key购买 nike

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

最佳答案

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

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

您可以尝试使用委托(delegate)来进行绘图,看看是否会产生影响。请注意,UIView 不能作为 CALayer 的委托(delegate)。就我而言,我创建了一个简单的委托(delegate)对象,它将绘制调用转发到我的 View 。

关于cocoa - 如何防止 CALayer 在其绑定(bind)更改时重新绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4118600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com