![](/img/trans.png)
[英]Set UIViewController view property to custom UIView class without storyboard / nib
[英]UIVIew resizing in Storyboard and NIB difference
社區。 有一些奇怪的 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 Simulator 上啟動應用程序時,RedView 變為 320 * 568,Blue 視圖變為 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,但為什么紅色會根據屏幕大小進行調整? 誰告訴它這樣做的?
在 XIB 中創建視圖和在故事板中創建視圖之間的區別與調整視圖大小有關,而不是其他任何東西。 為什么故事板會調整其視圖的大小,而 .XIB 不會?
我的項目是在 Xcode 6 中創建的,目標是 8.0,啟用了Autolayout
和Size Classes
。
這么老的問題,但仍然有人可能不太理解這種行為,就像我第一次面對它時一樣。
故事板中的UIViewController
有選項"Resize View From NIB"
,而 xib 中的UIView
沒有。 默認情況下,此選項處於打開狀態,這會使視圖控制器的視圖在加載時調整為屏幕大小,甚至在將視圖添加到視圖層次結構之前也是如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.