所以我的 Storyboard上有一个按钮。当按下该按钮时,我想将某个标签向下移动一点,并向屏幕添加一个新的文本字段。这是简化的代码:
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)
}
问题是,动画完成后,标签会跳回到原来的位置。就像动画提前终止一样。添加文本字段并且标签移动,但它不会保持移动状态。
我尝试在函数末尾添加文本字段,而不是在完成 block 中。任何形式的重新排序似乎都没有帮助。
我觉得我不理解动画的一些基本知识。如果有人有任何建议,我将不胜感激。
最佳答案
由于您正在使用 Storyboard ,因此您很可能也会使用自动布局。控件的位置在视觉设计( Storyboard)中确定,并将自动调整以适应方向变化并适应各种设备屏幕尺寸。这很好,但翻转大小是您无法使用控件的 x,y 坐标直接更改控件的位置。
相反,您可以更改在 Storyboard中定义的约束中的值。例如,如果您的按钮有一个“顶部”距离约束,其上方有一个控件(或 View 的边缘),则可以更改约束的“constant”属性来间接更改控件的位置。
为了操纵代码中的约束,您可以为它们创建 IBOutlet,就像处理任何控件一样。
关于swift - 尝试添加其他文本字段时,为什么我的标签不会更改位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34865310/