UIViewController 容器视图内容扩展容器边界

Posted

技术标签:

【中文标题】UIViewController 容器视图内容扩展容器边界【英文标题】:UIViewController Container view content extends container bounds 【发布时间】:2015-05-05 07:10:06 【问题描述】:

我正在尝试使用 UIViewController 容器来加载可重用的故事板视图。我正在使用 AutoLayout 并针对 ios 8。我面临的问题是加载的容器容器没有调整到容器视图,而是它的父视图。

这是模拟器中的结果。我为容器添加了粉红色背景以显示它的边界。如您所见,右边的按钮奇怪地扩展了容器的边界和屏幕。旋转视图后,它会奇怪地变得正确。

即使在旋转之后,加载的容器视图的内容也不会调整到它的父级(甚至是父级的父级)。它正在调整到最上面的视图。请参阅下面的示例,其中我减小了容器视图的宽度(参见粉红色背景),但加载的视图正在扩展它。

更新 1:我的 Container 视图中的视图约束设置如下:

【问题讨论】:

你们用什么“自动约束”?你的意思是 AutoLayout,或者你没有设置任何约束并让它自己调整大小? 容器视图的约束是什么?您可以将 containerView 嵌入到另一个视图中,并将此视图设置为 Clip Subviews。这应该将其限制在所需区域。 是使用自动布局。我试图将容器放在普通视图中。如果我在 Container 视图上使用“剪辑子视图”,它将剪切掉粉红色区域“顶部”的所有内容。 好的。请向我们展示应用于容器视图的约束。 首先使用“pin”菜单中的“constrain to margins”按钮从底部到所有约束 【参考方案1】:

通过在所有水平约束上选择 Relative to margin 解决了这个问题。在创建约束时也可以选择constrain to margins

【讨论】:

以上是关于UIViewController 容器视图内容扩展容器边界的主要内容,如果未能解决你的问题,请参考以下文章

过渡到已经包含的 UIViewController

父 UIViewController 调整容器视图大小时,子视图控制器不自动布局

将 UITableView 作为容器视图嵌入到 UIViewController 中

在主视图控制器的子容器视图中获取tableView的引用

如何在具有自动布局的容器视图中将 UITableView 的大小设置为子视图

UIViewController 扩展不允许覆盖 Swift 中的视图相关功能?