我遇到了一个问题:我有一个非常简单的自定义 UIView
,它将一个 UITextField
和一个 UILabel
组合在一起。
UILabel
在 UITextField
上,我希望当用户开始编辑 时
。 UILabel
达到 40px UITextField
我正在使用约束来设置文本字段的框架和标签的框架。
所以我只是在我的自定义 View 中使用 UITextFieldDelegate
协议(protocol)设置委托(delegate),并实现委托(delegate)方法:textFieldDidBeginEditing
,如下所示:
我只是在委托(delegate)方法中为我的标签的约束(中心 Y)设置动画。
func textFieldDidBeginEditing(textField: UITextField) {
self.centerVerticallyLabelConstraint.constant = -40
UIView.animateWithDuration(0.5) {
self.textFieldLabel.layoutIfNeeded()
}
}
发生的事情是 UILabel
正确上升,但它立即上升。它忽略了我动画中 0.5
的持续时间。我不知道为什么:
我没有同时制作其他动画,我只有这个动画。
我没有为 UIView.
禁用动画
委托(delegate)设置为我的 UITextfield
。
有什么想法吗?
最佳答案
尝试在您的 View 上调用 layoutIfNeeded 而不是 textview。
UIView.animate(withDuration: 0.5) {
self.view.layoutIfNeeded()
}
希望这对您有所帮助。
关于ios - UIView - 带有持续时间的动画似乎忽略了持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39469494/