【问题标题】:Using setContents on CALayer causes layer to disappear until animation completes在 CALayer 上使用 setContents 会导致图层消失,直到动画完成
【发布时间】:2014-10-23 11:41:33
【问题描述】:

我有一个 NSView 子类 thumbnailView,其中包含一个层托管视图 stillImage,它有一个 CALayer stillImageLayer

thumbnailView 创建后,我将 StillImageLayer 的内容设置为从磁盘加载的 NSImage [stillImageLayer setContents:originalImage]

在使用该应用程序时,该图像会更新,因此我致电[stillImageLayer setContents:newImage]

但我看到一些奇怪的事情正在发生。在此 CALayer 上调用 setContents 的第二次,它会在动画结束时消失并与新图像一起重新出现。我已经通过将 setContents 调用包装在 CATransaction 中并将动画持续时间设置为 5 秒来确认这一点。

但是,任何后续对 setContents 的调用都会按预期工作,图像会从旧到新溶解。

这是在带有匹配 SDK 的 OS X 10.10 上。

【问题讨论】:

    标签: macos cocoa core-animation


    【解决方案1】:

    我认为这是因为当有动画时,它会显示表示层。您正在为模型层设置内容,因此在动画完成之前它不会显示。

    如果希望动画完好无损,则需要在设置内容时再次重新应用动画。

    【讨论】:

    • 但是以前的内容实际上已经从屏幕上消失了,在CALayer上设置新内容时不应该发生这种情况。它应该做一个隐式动画并从旧到新淡入淡出,就像在设置内容时第 3、4、5 次等一样。
    • 我认为你是对的。至少如果您的动画不是内容动画,它应该可以正常工作。你试过 CABasicAnimation 吗?
    • 与 CABasicAnimation 的结果相同。完全奇怪。我现在要放弃并将过渡时间设置为 0 以保持一致性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多