【发布时间】:2013-05-12 23:36:56
【问题描述】:
我正在为 iPhone 5 的大屏幕更新我的 iPhone 应用程序,animateWithDuration: 似乎有问题。在我打开自动布局之前,当 UITextField 成为第一响应者时,界面元素会在屏幕上略微向上移动,而当 UITextField 失去其第一响应者状态时,界面元素会向下移动回原来的位置。现在,它们只是随意地在屏幕上飞来飞去,我不知道为什么。我使用下面的代码移动对象(这在关闭自动布局的情况下工作):
[UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
int offset = 160;
[object1 setFrame:CGRectMake(0, -offset, object1.frame.size.width, object1.frame.size.height)];
[object2 setFrame:CGRectMake(object2.frame.origin.x, object2.frame.origin.y-offset, object2.frame.size.width, object2.frame.size.height)];
[object3 setFrame:CGRectMake(object3.frame.origin.x, object3.frame.origin.y-offset, object3.frame.size.width, object3.frame.size.height)];
}
completion:^(BOOL finished){}];
这与尝试将对象移动一个常量有关吗?即使我将offset 设置为0,所有对象仍然会飞出屏幕。我已经尝试检测设备具有哪个屏幕并将对象移动不同的量,但这也没有奏效。有人有什么想法吗?
提前致谢!
【问题讨论】:
-
自动布局和帧动画相互冲突。我认为这是 iOS 6 最大的错误(许多错误)。解决方法见我的书:apeth.com/iOSBook/ch17.html#_animation_and_autolayout
标签: objective-c ios6 autolayout iphone-5