社区。有一些奇怪的UIView调整大小的事情,我不能理解。
比方说,我们有一个简单的Main.storyboard的单视图应用程序。RedView
. 它的默认大小为600x600。而且所有的选项都是默认设置的。我没有改变任何东西。
现在,我在创建BlueView.xib时使用了 BlueView
而且它的大小和选项与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
现在,当我在iPhone5模拟器上启动应用程序时,RedView变成了320*568,而BlueView变成了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}}
所以我的问题是:为什么在story中创建的RedView会变成320*568,而蓝景会变成600*600,在屏幕上看起来也不一样。
所以我的问题是:为什么在storyboard中创建的RedView会自动调整大小?我可以理解,为什么蓝色视图是600*600,但为什么红色会根据屏幕大小调整?谁告诉它这样做的?
在XIB中创建视图和在storyboard中创建视图的区别是什么?与调整视图大小有关,而不是其他。 为什么storyboard能调整视图大小,而.XIB不能?
我的项目是在Xcode 6中创建的,目标是8.0,使用的是...XIB。Autolayout
和 Size Classes
是启用。
这样一个老问题,但还是有人可能不太理解这样的行为,就像我第一次面对这样的问题。
UIViewController
在storyboard中,有一个选项 "Resize View From NIB"
而 UIView
xib中的选项没有。默认情况下,这个选项是开启的,这使得视图控制器的视图在加载时被调整为屏幕大小,甚至在视图被添加到视图层次结构之前。