界面生成器:从 NIB 调整视图大小

Posted

技术标签:

【中文标题】界面生成器:从 NIB 调整视图大小【英文标题】:Interface Builder: Resize View From NIB 【发布时间】:2010-06-09 12:14:05 【问题描述】:

我有一个自定义 UIViewController 和一个 nib 文件中的相应视图。视图直接添加到UIWindow中。

[window addSubview:customViewController.view];

窗口和视图的尺寸是默认的(480x320460x320对应)。

当我在 nib 文件中创建 CustomViewController 并在 IB 属性选项卡中检查 "Resize View From NIB" 时,一切正常。

但是,当我使用 initWithNibName 消息以编程方式创建 CustomViewController 时,视图未正确定位在窗口上。底部有一条空条纹。它的高度是20px。我看到这是因为状态栏偏移。

IB 使用 “Resize View From NIB” 来处理这个问题。 如何以编程方式模拟?

似乎 IB 使用了 UIViewController 的一些自定义子类。那么问题来了:“Resize View From NIB”是如何在那里实现的?

【问题讨论】:

【参考方案1】:

当我想确保视图覆盖整个屏幕时,我会这样做:

- (void) viewWillAppear: (BOOL) animated

    [super viewWillAppear:animated];
    [[self view] setFrame:[[UIScreen mainScreen] bounds]];

感觉像是一个 hack,所以我只是在万不得已的时候才这样做,当我无法让视图以其他方式表现时:)

【讨论】:

试过了,但对我不起作用。底部出现相同的条纹。 [[self view] setFrame:CGRectMake(0, 20, 320, 480)];这可行,但看起来像是某种硬编码。 [[UIScreen mainScreen] bounds]] 返回 (0, 0, 320, 480)。 你应该使用 applicationFrame 代替:self.view.frame = CGPointZero,[UIScreen mainScreen].applicationFrame.size]; 这对我也不起作用!设置后,它恢复了!

以上是关于界面生成器:从 NIB 调整视图大小的主要内容,如果未能解决你的问题,请参考以下文章

Xcode Interface builder 中的 Nib 视图不应用自动布局约束

如何在界面生成器的导航控制器中调整子视图的大小

图像在运行时自动调整大小但不在界面生成器上

从 xib 文件加载的自动调整视图大小

iOS UIView 不调整子视图的大小?

如何使用 Swift 从 UITableViewCell 内的 NIB 调整自定义 UIView 的大小?