UIView - 持续时间的动画似乎忽略了持续时间

Ant*_*nyR 5 animation uiview uiviewanimation ios swift

我遇到了一个问题:我有一个非常简单的习惯UIView,它将一个UITextField和一个组合在一起UILabel.

UILabel是对UITextField的,我想的是,UILabel当用户开始编辑上升到40像素UITextField.

我正在使用约束来设置文本字段的框架和标签的框架.

所以我只是在我的自定义视图中使用UITextFieldDelegate协议设置委托,并实现委托方法:textFieldDidBeginEditing,如下:

我只是在委托方法中设置标签的约束(中心Y).

func textFieldDidBeginEditing(textField: UITextField) {
    self.centerVerticallyLabelConstraint.constant = -40
    UIView.animateWithDuration(0.5) {
        self.textFieldLabel.layoutIfNeeded()
    }
}
Run Code Online (Sandbox Code Playgroud)

会发生什么事情是UILabel正确的,但它会立即上升.它忽略了0.5我动画中的持续时间.我不知道为什么:

显示问题图像

我不是同时动画其他东西,我只有这个动画.我没有禁用动画为UIView. 委托设置为我的UITextfield.

任何的想法?

nis*_*ngh 9

尝试在视图上调用layoutIfNeeded而不是textview.

UIView.animate(withDuration: 0.5) {
    self.view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.