首页 文章

即使我没有动画,我的表示层也不匹配我的模型层

提问于
浏览
3

在iPhone上,我有一个 CALayer ,我通过Core Animation制作动画 . 然后在某些时候我改变视图控制器 . 然后我使用 CALayer 返回视图控制器,并在 viewWillAppear: 中设置我的图层上的框架和位置属性,将其移回到起点 .

设置这些属性会更改模型图层,但表示层仍具有旧值,并且在我播放下一个动画之前,其表示层不会更新 .

在CA编程指南中,它说:

“在动画事务处理过程中,您可以查询CALayer的实例以查找其对应的表示层 . ”

对我来说,这意味着表示层应该只在动画期间与模型层不同 . 但是目前还没有动画 . 我甚至使用 kCATransactionDisableActions 来确保在设置position属性时不启动隐式动画 .

有谁知道为什么我的演示文稿和模型层不同步?

谢谢 .

2 回答

  • 0

    我使用的一种解决方法是在viewWillDisappear中重置我的图层的位置 . 另外我注意到如果我不立即为我的图层设置动画,那么它确实会移动到我在viewWillAppear中设置的位置 .

  • 1

    听起来Apple只是在动画中使用表示层,并且对它进行了延迟更新 . 当它不是动画时,它必须使用普通图层 . 我唯一的赌注是他们如何设法线程化UI并避免奇怪的错误 . 它甚至可能与使用哪些线程有关 .

    你的问题让我们深入了解了苹果公司的经验,也许答案很简单就是苹果所选择的,它也回答了我的问题 .

相关问题