在iPhone上我有CALayer
我通过Core Animation制作动画。然后在某些时候我改变视图控制器。然后我使用CALayer
返回到视图控制器,并在viewWillAppear:
中设置我的图层上的框架和位置属性,将其移回到起点。
设置这些属性会更改模型图层,但表示层仍然具有旧值,并且在我播放下一个动画之前,其表示层不会更新。
在CA编程指南中,它说:
“您可以查询CALayer的实例以查找其对应的实例 动画事务处理过程中的表示层。“
对我来说,这意味着表示层应该只在动画期间与模型层不同。但是目前还没有动画。我甚至使用kCATransactionDisableActions
来确保当我设置position属性时,不会启动隐式动画。
有谁知道为什么我的演示文稿和模型图层不同步?
感谢。
答案 0 :(得分:1)
我使用的一种解决方法是在viewWillDisappear中重置我的图层的位置。另外我注意到如果我没有立即为我的图层设置动画,那么它确实会移动到我在viewWillAppear中设置的位置。
答案 1 :(得分:0)
听起来Apple只是在动画中使用了表示层,并且对它进行了延迟更新。当它不是动画时,它必须使用普通图层。我唯一的赌注是他们如何设法线程化UI并避免奇怪的错误。它甚至可能与使用哪些线程有关。
你的问题让我们深入了解了苹果公司的经验,也许答案就是苹果选择的答案,它也回答了我的问题。