我有一个在一个View Controller中运行良好的关键帧动画。然后我将该代码复制到另一个类似的VC。不同之处在于,这次动画在屏幕上移动的视图更深一层,嵌套在另外的UIView中。这似乎导致了坐标问题。
我得到这个目的地x点:
let last_Pos = destinationImg.superview?.convertPoint(destinationImg.frame.origin, toView: nil)
然后在关键帧中,我将x设置为:
self.animatedView.frame.origin.x = last_Pos!.x
我在原始的ViewController和new中都打印了“last_Pos”。它获得了相同的x值465,所以这不是问题。我很确定我的问题是在第二个VC中465被应用到它嵌套的额外层/ UIView。我研究了this但是没有找到很多在Swift中写的但是看起来像Objective -C有办法做到这一点。
我的问题是,如何在这两个视图的同一层上获取x值,以便我可以将其设置为另一个?
答案 0 :(得分:0)
如上所述,我试图获得“绝对”x& y定位动画在不同层次结构中的两个视图。如果您不知道,当您检查frame.origin.x或frame.origin.y时,您将获得上下文x& y引用其父视图的位置。我找不到一个有效的答案,没有人回答这个帖子。
所以...我的答案更像是一个补丁工作修复,似乎适用于大多数情况:
我只是在界面构建器中添加了另一个视图。
对于自动布局约束,我将一端连接到我的动画应该来自的视图,并将另一端连接到我希望我的动画结束的视图。不可思议的是,它会根据方向变化,iPhone,iPad布局等改变宽度和高度。
然后,对于我的动画,我的所有代码都检查“测量棒”的宽度和高度,并将这些值用于x和amp;的变化。年。
希望这有帮助。