UIView动画试图改变框架大小不适用于iOS 8但iOS 7
我想调整一个UIView,我的代码在iOS 7.1中完美工作,但是当我在iOS 8中运行它时,它无法正常工作(我会在下面解释)。UIView动画试图改变框架大小不适用于iOS 8但iOS 7
我有我的UIView INT用,我想调整到iPad上全屏值(0,67,511,320)故事板,所以我加了如下代码:
[UIView animateWithDuration:0.5 animations:^{
CGRect frame = containerView.frame;
frame.origin.x = 0;
frame.origin.y = 67;
frame.size.height = 643;
frame.size.width = 1024;
containerView.frame = frame;
...
}completion:^(BOOL finished) {
...
}];
我想是这样的:
_________________________________
| | |
| | |
| A | |
|___________| |
| |
| BACKGROUND |
| |
| |
|_________________________________|
|
V
_________________________________
| |
| |
| |
| A |
| |
| |
| |
| |
|_________________________________|
但它开始像(0,67,0,0)的动画(0,67,511,320)
正在发生的事情的任何线索?或者选择?
你应该禁用预先生成的约束条件之后。最简单的方法是在动画视图中使用自动调整遮罩而不是约束。
containerView.translatesAutoresizingMaskIntoConstraints = YES;
你可以把这个代码添加到您-viewDidLoad
方法或略高于[UIView animateWithDuration:...
什么应该是contrainerView如果我有滚动视图和uiview里面的scrollview和动画发生在这个uiview里面。这是uiview吗? – coolcool1994 2015-07-06 20:16:53
是否启用了自动布局功能? 也许在iOS 8的一些附加约束期间构建时
尝试调用animatin块[self.view layoutIfNeeded];
增加,动画代码本身
UPDATE
__block CGRect frame = containerView.frame;
frame.origin.x = 0;
frame.origin.y = 67;
frame.size.height = 643;
frame.size.width = 1024;
[UIView animateWithDuration:0.5 animations:^{
containerView.frame = frame;
...
}completion:^(BOOL finished) {
...
}];
我在故事板中加入了我的观点,我该如何禁用它? – 2014-09-26 08:48:50
[self.view layoutIfNeeded]有帮助吗?也看看如何动画视图与constrints http://*.com/questions/17626802/animating-uiview-frame-with-constraints – Roma 2014-09-26 08:56:36
不,动画没有显示,如果我使用它:/ – 2014-09-26 08:58:21
注意,覆盖所有成员的时候,你做你不需要从'containerView.frame'得到帧。 – Aaganrmu 2014-09-26 09:24:06
是的,我知道,谢谢你的建议。 – 2014-09-26 09:52:49