为什么我的标签在尝试添加其他文本字段时不会更改位置?

时间:2016-01-18 22:33:19

标签: swift uiview animatewithduration

所以我的故事板上有一个按钮。按下该按钮时,我想将某个标签向下移动一点,并在屏幕上添加一个新的文本字段。这是简化的代码:

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会被添加,标签会移动但不会保持移动状态。

我尝试在函数末尾添加文本字段,而不是在完成块中添加。没有任何重新排序似乎有所帮助。

我觉得我不理解动画的基本内容。如果有人有任何建议我会非常感激。

1 个答案:

答案 0 :(得分:0)

由于您正在使用故事板,因此您很可能也使用自动布局。控件的位置在您的视觉设计(故事板)中确定,并将自动调整为方向更改并适应各种设备屏幕大小。这很好,但翻转尺寸是你无法使用x,y坐标直接改变控件的位置。

相反,您可以更改在故事板中定义的约束中的值。例如,如果按钮具有“顶部”distancs约束,其上方有一个控件(或视图的边缘),则可以更改约束的“常量”属性以间接更改控件的位置。

为了操纵代码中的约束,您可以为它们创建IBOutlet,就像对任何控件一样。