Ios 为什么在收到UIKeyboardShowNotification后我更改了其帧的UIView会自动设置动画?
我注意到一个令人惊讶的行为:当我在收到Ios 为什么在收到UIKeyboardShowNotification后我更改了其帧的UIView会自动设置动画?,ios,animation,keyboard,uiviewanimation,Ios,Animation,Keyboard,Uiviewanimation,我注意到一个令人惊讶的行为:当我在收到UIKeyboardWillShowNotification或UIKeyboardWillHideNotification后更改UIView的帧时,帧的更改是动画化的。这个动画似乎使用了与键盘相同的持续时间和缓和曲线。在这个项目中,我不使用自动布局,而是通过设置视图的框架以编程方式布局视图 有人能给我解释一下这里发生了什么事吗 代码 UIViewController的viewDidLoad()的有趣部分: 回调: func keyboardWillShow(
UIKeyboardWillShowNotification
或UIKeyboardWillHideNotification
后更改UIView
的帧时,帧的更改是动画化的。这个动画似乎使用了与键盘相同的持续时间和缓和曲线。在这个项目中,我不使用自动布局,而是通过设置视图的框架以编程方式布局视图
有人能给我解释一下这里发生了什么事吗
代码
UIViewController的viewDidLoad()
的有趣部分:
回调:
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)
}
进一步详情
- 回调只调用一次
- 我使用的是标准的UIViewController
- 我没有收到来自
通知的回调动画UIKeyboardDid…
- 我可以通过调用
在设置我的UIViews框架之前,但是 看起来有点黑UIView.commitAnimations()
- 不应该涉及自动布局,因为我正在通过设置视图的框架来布局视图
- 这是预期的行为吗李>
- 它在什么地方有记录吗李>
- 有没有一个好方法可以禁用这些动画李>
- 依靠这种行为是否省钱
- 当收到
通知时,我是否可以安全地播放自定义动画UIKeyboardWill…
- 是的,因为这些通知中的代码专门用于设置视图动画以响应键盘外观,例如滚动视图或将文本字段移动到正确的位置
- 除了可用的键盘通知文档外,我什么也找不到
- -相关问题
- 要禁用这些动画,请调用
和didShow
通知,因为它们包含动画提交后要执行的代码didHide
- 对
- 只要你能很好地使用键盘动画,是的!但是这些通知是用来处理视图中的键盘动画交互,而不是其他无关的动画。您应该在滚动视图中创建那些不相关的动画视图,并在收到键盘通知时相应地滚动,以获得更好的体验
- 答案如下:
希望我能帮上忙。这肯定会帮上忙,谢谢。作为后续,你认为这个总结是正确的吗?在发送
ui键盘将…
通知之前调用。当我在其中一个通知的回调中更改视图的帧时,这发生在开始/提交动画块内部。因此,这些更改是动态的。最终被称为。
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)
}