[英]Swift: Animated UIView moves towards source instead of away from it
我认真地环顾四周,但找不到能回答我问题的内容,因此,如果您找到正确的解决方案,请告诉我。
所以:我用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()
}
可以尝试在动画块中尝试以下代码,而不是尝试移动视图的中心(这是一种不好的做法)
self.label2.transform = CGAffineTransform(scaleX: 0, y: 350)
这实际上将为图层设置动画,而不是视图的实际框架。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.