【发布时间】:2014-06-17 21:00:58
【问题描述】:
关于自动布局和 UIScrollViews 的问题有一百万个,但我认为这是不同的。
我有一个看起来像这样的构造:
白色背景是 UIView,它充当 UIScrollView 中的容器(获取滚动视图以构建自己的内容大小的典型设置,以便根据容器视图正确滚动)。
TableView 1 和 TableView 2 的高度需要是动态的。我不希望它们滚动,所以我需要将它们的框架高度设置为等于它们的内容高度。
我有 IBOutlets 用于每一个的高度限制,并且可以毫无问题地调整它们。
当我尝试调整容器视图的高度时会出现问题。最终,我不想弄乱它并让该视图根据其内容自动调整大小,但这似乎不起作用(如果我离开容器视图的高度,我会在 IB 中收到警告/错误关于约束)。
如果我为容器视图的高度约束创建一个出口并设置它,我会得到一个断言失败:
*** Assertion failure in -[UIView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2935.137/UIView.m:8803
我正在 viewDidLayoutSubviews 中进行约束调整,如下所示:
- (void)viewDidLayoutSubviews {
self.orderItemTableViewHeightConstraint.constant = self.orderItemTableView.contentSize.height - [self tableView:self.orderItemTableView heightForHeaderInSection:0];
self.shippingOptionTableViewHeightConstraint.constant = self.shippingMethodTableView.contentSize.height;
self.scrollViewContainerViewHeightConstraint.constant = self.cardInfoLabel.$bottom + 60;
}
我认为问题在于设置容器视图的高度约束会导致一些递归或什么...
问题:
- 在这种情况下,有没有办法让容器视图的高度根据其内容而变化?
- 如果没有,我该如何以编程方式处理?我是在错误的地方改变了约束还是什么?
感谢您的任何意见!
【问题讨论】:
-
一个更简单的解决方案就像我放在这里的那样:stackoverflow.com/a/28184351/981979
标签: ios uitableview uiscrollview autolayout