我正在尝试了解 iPhone 5 模拟器上 iOS 7.0 中的新键盘动画。我想在键盘出现时调整 UITableView
的大小,但我无法获得正确的动画细节。
当键盘出现或消失时,我正在使用来自 NSNotification
对象的信息。
这是我的日志:
Move keyboard from {{0, 920}, {320, 216}} to {{0, 352}, {320, 216}}
with duration: 0.400000
and animation curve: 7
UIViewAnimationCurveEaseInOut = 0
UIViewAnimationCurveEaseIn = 1
UIViewAnimationCurveEaseOut = 2
UIViewAnimationCurveLinear = 3
动画曲线是未知值,怎么办?
最佳答案
在 iOS 7 中,键盘使用了一种新的、未记录的动画曲线。虽然有些人注意到对动画选项使用未记录的值,但我更喜欢使用以下内容:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:[notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
[UIView setAnimationCurve:[notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]];
[UIView setAnimationBeginsFromCurrentState:YES];
// work
[UIView commitAnimations];
虽然建议使用基于 block 的动画,但从键盘通知返回的动画曲线是 UIViewAnimationCurve
,而您需要传递给基于 block 的动画的选项是 UIViewAnimationOptions
。使用传统的 UIView 动画方法,您可以将值直接通过管道输入。最重要的是,这将使用新的未记录动画曲线(整数值 7)并使动画与键盘匹配。而且,它同样适用于 iOS 6 和 7。
关于objective-c - iOS 7 - 键盘动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18957476/