4

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

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

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

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

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

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

布局和模拟器

4

1 回答 1

9

我找到了一个与大多数解决方案一样的解决方案,回想起来似乎很明显。

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

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

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

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

于 2013-04-21T04:19:36.693 回答