繁体   English   中英

Swift:动画UIView朝着源而不是远离源

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM