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

Posted

技术标签:

【中文标题】如何在界面生成器的导航控制器中调整子视图的大小【英文标题】:How to resize sub views in Navigation Controller in Interface Builder 【发布时间】:2011-04-13 15:28:25 【问题描述】:

我正在构建一个 iPhone 应用程序,在我的一个问题中,我正在尝试调整子视图的大小。首先,我有一个表格视图,当点击每个数据时,它会打开一个新视图。但问题是打开的视图(包含导航控制器)中的图像和文本没有正确对齐。它们都放错了位置,我的猜测是,在那个视图上,它只显示了顶部的 3/4,而不是整个视图(我在底部的大多数图像只显示了一半的图像)。我的目标是使每个图像和文本都适合我的视图,该视图在我的视图顶部包含一个导航控制器。因此,经过研究,我可以在 Interface Builder 中更改大小和位置,但由于某种原因它们是空白的,我无法编辑:

另外,我在 viewDidLoad 中尝试了这段代码:

// DetailViewController.m
- (void)viewDidLoad 
    [super viewDidLoad];
    self.view.autoresizesSubviews = YES;
    self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

到目前为止,这些都没有调整我的视图大小以适合我的导航控制器,所以我希望有人更好地了解如何调整我的视图大小并使用导航控制器,谢谢

【问题讨论】:

*** 不是论坛;如果您需要添加更多详细信息,请edit your question。答案应该是答案,而不是关于问题的附加信息。 【参考方案1】:

让我总结一下,所以我明白你在这里想要做什么。你有一个带有 UITableView 的视图。当您在该表视图中选择一个单元格时,您会将一个新视图推送到导航堆栈上。在那个新视图中,您的部分布局在顶部被导航控制器的导航栏遮挡了?

假设我是对的...... 您的问题在于被推送到导航堆栈的视图(和子视图)的自动调整大小掩码。您需要在 Interface Builder 中设置它才能看到正确的结果。它应该是这样的: 这意味着视图将缩小和增长以匹配它发现自己处于的任何大小约束。在显示在 UINavigationController 中的情况下,它会自行缩小,以适应导航栏和可选工具栏之间的较小屏幕空间。

还要注意在该视图的所有子视图上设置适当的自动调整大小掩码,以便它们都能适当地处理任意调整大小。

【讨论】:

嘿,谢谢你的回复,如果我没有说清楚,对不起,我会再次发帖向你展示我真正在说什么

以上是关于如何在界面生成器的导航控制器中调整子视图的大小的主要内容,如果未能解决你的问题,请参考以下文章

在导航控制器中添加子视图覆盖导航栏

如何通过界面生成器更改导航项标题?

如何动态调整导航栏中的标题大小

如何防止子视图重叠标签栏?

自定义 Viewcontroller 转换无法正确调整大小

导航控制器调整大小仅适用于纵向?