所以我的故事板上有一个按钮。按下该按钮时,我想将某个标签向下移动一点,并在屏幕上添加一个新的文本字段。这是简化的代码:
UIView.animateWithDuration(0.5, animations: { () -> Void in
self.addIngredientLabel.center.y += self.addIngredientLabel.bounds.height
}) { (_) -> Void in
let newIngredientTextField = UITextField(frame: CGRectMake(100, 110, 100, 100))
newIngredientTextField.center.y -= 50
newIngredientTextField.placeholder = "place text here"
newIngredientTextField.contentHorizontalAlignment = .Left
self.view.addSubview(newIngredientTextField)
}
但问题是,在动画完成后,标签会跳回原来的位置。这就像动画正在预先成熟终止。 textField会被添加,标签会移动但不会保持移动状态。
我尝试在函数末尾添加文本字段,而不是在完成块中添加。没有任何重新排序似乎有所帮助。
我觉得我不理解动画的基本内容。如果有人有任何建议我会非常感激。
答案 0 :(得分:0)
由于您正在使用故事板,因此您很可能也使用自动布局。控件的位置在您的视觉设计(故事板)中确定,并将自动调整为方向更改并适应各种设备屏幕大小。这很好,但翻转尺寸是你无法使用x,y坐标直接改变控件的位置。
相反,您可以更改在故事板中定义的约束中的值。例如,如果按钮具有“顶部”distancs约束,其上方有一个控件(或视图的边缘),则可以更改约束的“常量”属性以间接更改控件的位置。
为了操纵代码中的约束,您可以为它们创建IBOutlet,就像对任何控件一样。