自动调整UIScrollView以适应内容,包括子视图和分组表

时间:2013-04-19 01:59:01

标签: iphone autolayout

我正在尝试提供有关分组为部分的对象的信息。它可能很长,因此每个部分都使用视图来可视地分隔区域,并且它都在滚动视图中。

第一个子视图的文本字段调整大小以适合文本,其父视图也调整大小以适合文本字段。

第二个子视图有一个分组表来显示数据。我希望表格中的所有数据都出现,并且不应该滚动表格。

第三个子视图包含更多信息,但其内容为本演示目的的空视图。在真实的应用程序中,我可以添加任意数量的自定义子视图。

我发现第一个子视图调整得适当但我找不到布局约束的组合,这将使第二个子视图大小适合表格并向下移动第三个视图。

当子视图的内容可能调整大小时,我需要做什么才能使滚动视图适合其内容?表视图填充父视图中的可用空间,但父视图未扩展到适合。我注意到第三个视图对superview有一个顶部空间约束,而不仅仅是它上面的视图。这在下面的屏幕截图中可见

layout and simulator

1 个答案:

答案 0 :(得分:9)

我发现像大多数解决方案一样的解决方案,回想起来似乎很明显。

我认为我的问题是内部桌面视图没有固定高度,因为它也是一个滚动视图,试图适应任何分配而不是扩展以适应内部内容。我能够通过在IB中添加固定高度约束并将其连接到视图控制器中的插座来解决我的问题。然后在控制器中:

-(void) viewWillLayoutSubviews{
    [self.tableView layoutIfNeeded];
    self.tableViewHeightConstraint.constant = self.tableView.contentSize.height;
}

DERP。总之,表格视图需要一个高度,所以我设置了一个。

这是截图,请注意右侧的固定高度限制: properly scrolling view