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

标签 ios swift animation uiview uiviewanimation

我遇到了一个问题:我有一个非常简单的自定义 UIView,它将一个 UITextField 和一个 UILabel 组合在一起。

UILabelUITextField 上,我希望当用户开始编辑 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 的持续时间。我不知道为什么:

Show problem image

我没有同时制作其他动画,我只有这个动画。 我没有为 UIView. 禁用动画 委托(delegate)设置为我的 UITextfield

有什么想法吗?

最佳答案

尝试在您的 View 上调用 layoutIfNeeded 而不是 textview。

UIView.animate(withDuration: 0.5) {
    self.view.layoutIfNeeded()
}

希望这对您有所帮助。

关于ios - UIView - 带有持续时间的动画似乎忽略了持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39469494/

相关文章:

animation - 分享很棒的 CSS3 技巧的地方

css - 使用 CSS 的 SVG 动画

image - 在matlab中将图像添加到动画中

swift - 非可选 IBOutlet 返回 fatal error : when referenced from another UIViewController class

ios - 如何在 SwiftUI 中以横向模式预览设备?

ios - 在 __pthread_kill 上崩溃

ios - 有人可以解释此代码如何使用 Accelerate Framework 将音量转换为分贝吗?

ios - UITabBarController 中的 UINavigationController 未完全包装 UIViewController

ios - Swift 4 快捷语法将多个对象添加到数组中,并设置了一些属性?

ios - 使用 iOS 的 Google Analytics,数据不发送