UIView有2个图像作为子视图,剪辑到边界设置为是。
我想在动画块中移动UIView,但子视图不随父项一起移动。如果视图向右移动50个点,则会看到更多的第二个图像,而不是第一个图像。
我可以手动移动视图,并更新与新视图位置相对的子视图位置,但我无法弄清楚如何在块中实现相同的功能。
答案 0 :(得分:0)
我认为你遇到的限制与UIView Animation阻止使用核心动画的事实有关,Core Animation动画了一个'presentation'层,它是原始视图/图层的副本。动画安排在。因此,在块的动画期间,表示层的位置会发生变化,但模型视图的位置保持不变。
由于您提到可以手动更新视图位置(以及相反方向的子视图位置)以达到所需效果,因此请考虑在每秒运行60次的动画计划时间创建NSTimer(尝试捕捉每个动画)框架)简单地查询表示层的当前位置(由动画本身设置+任何指定为动画参数的特殊计时函数),并执行您的工作以更新底层模型以匹配它。
您应该可以使用以下方法查询动画图层的位置:
yourUIView.layer.presentationLayer.frame.origin
然后在动画中添加一个使计时器无效的完成块。
在访问视图的图层属性之前,必须将
添加到项目中QuartzCore.framework
干杯,