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

Jam*_*mes 4 iphone autolayout

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

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

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

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

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

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

布局和模拟器

Jam*_*mes 9

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

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

-(void) viewWillLayoutSubviews{
    [self.tableView layoutIfNeeded];
    self.tableViewHeightConstraint.constant = self.tableView.contentSize.height;
}
Run Code Online (Sandbox Code Playgroud)

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

这是一个截图,请注意右侧的固定高度约束: 正确滚动视图