社区。有一些奇怪的UIView调整大小的东西,我无法理解。
让我们说,我们有一个简单的单视图应用程序与Main.storyboard。
在故事板中,我创建了RedView
。它的默认大小为600x600。并且所有选项都默认设置。我没有改变任何事情。
现在,我正在使用BlueView
创建BlueView.xib,它具有与RedView相同的大小和相同的选项。我也在创建BlueViewControler
类,并在BlueView.xib中将其设置为所有者。 BlueViewControler是空的。
RedView包括像这样的孩子BlueView:
@implementation RedViewController
{
BlueViewController *_blueViewController;
}
- (void)viewDidLoad {
[super viewDidLoad];
_blueViewController = [[BlueViewController alloc] initWithNibName:@"BlueView" bundle:nil];
[self.view addSubview:_blueViewController.view];
}
@end
现在,当我在iPhone 5模拟器上启动应用程序时,RedView变为320 * 568,蓝色视图变为600 * 600。
2015-08-28 13:32:17.937 TestViewSize[3087:77218] RedView frame = {{0, 0}, {320, 568}}
2015-08-28 13:32:17.938 TestViewSize[3087:77218] BlueView frame = {{0, 0}, {600, 600}}
在屏幕上,它们看起来也不同。 所以我的问题是:
为什么在故事板中创建的RedView会自动调整?我可以理解,为什么蓝色视图是600 * 600,但为什么Red调整到屏幕尺寸?谁告诉它这样做?
在XIB和故事板中创建视图与调整视图大小有什么区别,而不是其他任何内容。为什么storyboard会调整视图大小,而.XIB不会?
我的项目在Xcode 6中创建,目标为8.0,启用了使用Autolayout
和Size Classes
。
答案 0 :(得分:1)
这是一个古老的问题,但是仍然有人可能不太了解这种行为,就像我第一次面对它时一样。
故事板中的 UIViewController
具有选项"Resize View From NIB"
,而xib中的UIView
没有选项。默认情况下,此选项处于启用状态,即使在将视图添加到视图层次结构之前,也可以在加载时将视图控制器的视图调整为屏幕大小。
答案 1 :(得分:0)