【发布时间】:2017-05-02 13:23:25
【问题描述】:
我正在尝试为受限 (iconVerticalConstraint) 位于超级视图的中心 Y (+100) 的视图设置动画,特别是在动画后到达其右侧 (0) 位置。
这是我的代码:
self.view.layoutIfNeeded()
UIView.animateKeyframes(withDuration: 2, delay: 0, animations: {
UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.25, animations:{
self.iconVerticalConstraint.constant -= 20
})
UIView.addKeyframe(withRelativeStartTime: 0.25, relativeDuration: 0.75, animations:{
self.iconVerticalConstraint.constant -= 80
})
})
我尝试关注this question's answer,但这并没有帮助,因为在我的情况下,我的视图包含更多子视图,它们是内在链接的,并且将layoutIfNeeded() 放在我的动画块中会为整个视图设置动画,而不仅仅是那个约束。否则这种方法根本没有动画。
【问题讨论】:
-
请注意,如果我将
self.view.layoutIfNeeded()移动到animateKeyframes块内,则会发生动画,但它会为所有视图设置动画(就像我认为应该的那样),而不仅仅是约束,如第一条评论中所述。 -
已编辑以解释与可能重复的差异。
-
为什么这被否决了?否决者能解释一下吗?
标签: ios swift cocoa animation uiview