在我的应用程序中,我有两个排序按钮,看起来像一个自定义分段控件。
VC选择了 Button1 。 如果您按 Button2 ,UIView将从 Button1 动画到 Button2 - 这样可以显示选择了哪个按钮
我的代码如下所示:
@IBAction func BtnOneDidTouch(sender: AnyObject) {
myLabel.text = "Button 1"
UIView.animateWithDuration(0.7,
delay: 0,
usingSpringWithDamping: 0.7,
initialSpringVelocity: 0.5,
options: nil,
animations: {
self.underLine.center = CGPointMake(self.btnOne.center.x, self.btnOne.center.y + 16)
}, completion: nil
)
}
@IBAction func BtnTwoDidTouch(sender: AnyObject) {
myLabel.text = "Button 2"
UIView.animateWithDuration(0.7,
delay: 0,
usingSpringWithDamping: 0.7,
initialSpringVelocity: 0.5,
options: nil,
animations: {
self.underLine.center = CGPointMake(self.btnTwo.center.x, self.btnTwo.center.y + 16)
}, completion: nil
)
}
underLine 是正在设置动画的视图。
如果我发表评论
myLabel.text =“按钮1”
和 myLabel.text =“按钮2”
从它将起作用的功能。 但如果我离开它们,它就不起作用。
它失败了: 如果单击Btn2,视图将滑动,然后再次跳回,只会更改文本标签。
我想要的是让视图滑动并保持并更改标签。
答案 0 :(得分:1)
问题可能是限制因素。你动画的视图可能有你给它的约束或xcode给它的约束。
设置文本时,会导致布局触发,这会将视图扭曲回初始自动布局位置。
尝试将动画视图translatesAutoresizingMaskIntoConstraints属性设置为NO。
或者,给视图一个前导和顶部约束,CTRL拖动它们以创建IBOutlets,然后在代码中更改约束常量并为约束更改设置动画。
有关如何为约束设置动画的详细信息,请参阅:How do I animate constraint changes?