我在UIViewController
中有此代码,可在键盘打开时更改视图的高度。
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
// Subscribe to keyboard events.
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
}
func keyboardWillShow(notification: NSNotification) {
let keyboardHeight = notification.userInfo![UIKeyboardFrameEndUserInfoKey]!.CGRectValue.height
// UIView.animateWithDuration(0.5) {
self.view.frame.size.height -= keyboardHeight
self.view.layoutIfNeeded()
// }
}
我注意到即使没有UIView.animateWithDuration
,视图也会动画。为什么会这样?
答案 0 :(得分:1)
通知作为动画块的一部分发送出去。如果从与动画相关的通知中提取信息,则可以使其他视图与其一起动画。在您的情况下,您在keyboardWillShow
和keyboardDidShow
之间对视图所做的所有更改都将作为该键盘动画的一部分进行动画制作。