我认真地环顾四周,但没有找到可以回答我的问题的东西,所以如果您找到了正确的解决方案,请告诉我。
所以:我在 Xcode 中编写了一个小应用程序,其中两个标签应该从当前位置移动到 350 点以上的另一个位置。我像这样为它们制作动画:
UIView.animate(withDuration: 2.0 , animations: {
self.label1.center.y += CGFloat(-350)
self.label2.center.y += CGFloat(-350)
})
实际发生的事情是,一旦命中这条线,标签就会跳下 350 点,然后将这 350 点向上移动到它们的来源。当我将 CGFloat
值更改为 +350 时,标签跳了 350 点,然后再次向下移动回到源。如此看来,Xcode 并没有从源头开始动画,而是试图让动画转到源头。老实说,我不知道为什么,因为所有关于动画的文档都另有说明。
顺便说一句,我也查看了我是否对标签的 y 轴位置有限制,但没有任何限制。
最佳答案
首先,尝试:
self.label1.center.y += CGFloat(-350)
self.label2.center.y += CGFloat(-350)
然后:
UIView.animate(withDuration: 2.0 , animations: {
layoutIfNeeded()
}
注意:如果您对标签使用约束,您应该通过更改约束而不是向其添加 CGFloat
来更改标签的位置。然后尝试:
UIView.animate(withDuration: 2.0 , animations: {
layoutIfNeeded()
}
关于ios - Swift:动画 UIView 向源移动而不是远离它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50545119/