我认真地环顾四周,但没有找到能回答我问题的答案,所以如果你找到了正确的解决方案,请告诉我。
所以:我在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个点,然后再次下移到source。因此,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()
}

10-05 21:00