【发布时间】:2016-10-04 13:46:14
【问题描述】:
当用户从 textField 移动到 textField 时,我正在尝试为 viewController 中的所有视图设置动画(向上和向下),其中每个 textField 都有一个不同高度的键盘,并且我正在使用自动布局来定位所有意见。
我有四个UITextFields 和三个UIButtons 使用自动布局并根据不同的键盘高度上下移动,我的问题是,由于某种原因,所有视图都会在 viewController 加载后立即动画这不是我想要的,我只希望它们在键盘高度不同时制作动画。动画看起来就像是在加载 viewController 后立即为所有视图的大小和位置设置动画。
为了驱动动画,我有一个主要约束 (constraintKeyboardHeight),所有视图都附加到其中以确定它们的垂直位置(见下图)。
仅供参考 - 请注意,我正在自动聚焦 viewDidLoad 方法中的一个文本字段。我不确定这是否与它有关。
有什么想法吗?在为带有约束的视图设置动画时,这是正常行为吗?
override func viewDidLoad() {
super.viewDidLoad()
oneTextField.becomeFirstResponder()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(UserInputViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
}
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
keyboardHeight = keyboardSize.height + 10
UIView.animateWithDuration(3.0, animations: {
self.constraintKeyboardHeight.constant = keyboardHeight
self.view.layoutIfNeeded()
})
}
}
【问题讨论】:
标签: ios swift animation autolayout uikit