我注意到一种令人惊讶的行为:当我在收到UIView
或UIKeyboardWillShowNotification
后更改UIKeyboardWillHideNotification
的框架时,框架的更改为动画 。看起来这个动画使用与键盘相同的持续时间和缓和曲线。在这个项目中,我不使用Autolayout,我通过设置框架以编程方式放置视图。
有人可以向我解释这里发生了什么吗?
UIViewController的viewDidLoad()
的有趣部分:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillShow), name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillDisappear), name: UIKeyboardWillHideNotification, object: nil)
someView.frame = CGRect(origin: CGPoint(x: 0, y: view.bounds.height - 10), size: CGSize(width: 10, height: 10))
someView.backgroundColor = UIColor.redColor()
view.addSubview(someView)
回调:
func keyboardWillShow(notification: NSNotification) {
someView.frame.origin = CGPoint(x: 0, y: 0)
}
func keyboardWillDisappear(notification: NSNotification) {
someView.frame.origin = CGPoint(x: 0, y: view.bounds.size.height - someView.bounds.size.height)
}
UIKeyboardDid...
通知UIView.commitAnimations()
,但是这个
好像很讨厌。UIKeyboardWill...
通知时安全地播放自定义动画吗?答案 0 :(得分:1)
答案:
didShow
和didHide
通知,因为它们包含动画提交后要执行的代码。希望我帮助过。