2013-04-19 16 views
4

我想呈现关于分组为段的对象的信息。它可能很长,所以每个部分都使用一个视图来在视觉上区分这些区域,并且它们都处于滚动视图中。Autolayout UIScrollView,以适应包括子视图和分组表格的内容

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

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

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

我在找的是第一个子视图适当地调整大小,但是我找不到将使第二个子视图大小适合表并移动第三个视图的布局约束的组合。

当子视图的内容可能调整大小时,我需要做些什么来使滚动视图适合其内容?表视图正在填充父视图中的可用空间,但父视图未扩展为适合。我注意到,第三个视图对superview有一个顶部空间限制,而不仅限于它上面的视图。在截图中看到的下面

layout and simulator

回答

9

我发现了一个解决方案,最喜欢的解决方案,回想起来明显。

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

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

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

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

相关问题