我的故事板上有这样的结构(我添加了一些示例名称以便于理解):
我想得到什么?我想要一个与他的行数成比例增长的表(行高固定为60)。我还想要一个UIScrollview,它可以根据BlueView和RedView的高度和相应地增加content\u大小和滚动能力。
自动布局约束包括:
UiScrollView“OrangeView”:
(顶部0,尾部0,底部0,前导0)
UIView“YelloView”:
(顶部0,尾部0,底部0,前导0)(与主ed等宽,与主“BlackView”等高,底部优先级低)
UITabelView“BluView”:
(顶部0,尾部0,前导0)
UIView“RedView”:
(垂直空格2到“BluView”,尾随0,前导0,底部0到YelloView)
我有一个从视图顶部到底部的完整约束链。UITableView可以自由增长,因为我没有直接设置他的“高度”约束,而UITableView设置CrollingEnabled为FALSE。结果是一个不增长的tableview。
我可以按代码生成增长:
Table.frame=CGRectMake(BluView.frame.origin.x, BluView.frame.origin.y, BluView.frame.size.width, BluView.contentSize.height);
我工作了,表格框架和“OrangeView”滚动内容大小正确增长,但“RedView”不响应此框架更改,也不移动到距离的新“table bottom”ad 2。
我已经尝试刷新约束系统的内容:
[BlackView layoutIfNeeded];
[BlackView setNeedsUpdateConstraints];
[RedView layoutIfNeeded];
[ScrollContainer layoutIfNeeded];
[RedView layoutIfNeeded];
[RedView setNeedsUpdateConstraints];
[OrangeView setNeedsUpdateConstraints];
[RedView updateConstraints];
[OrangeView updateConstraints];
[BlackView updateConstraints];
[BluView setTranslatesAutoresizingMaskIntoConstraints:NO];
[RedView setTranslatesAutoresizingMaskIntoConstraints:NO];
我在uitable帧更改前后调用了这些方法,它们不会刷新红色视图的y位置。我怎样才能获得想要的行为?有一种方法可以创建另一种类型的“costraints树”,或者有另一种方法可以在以编程方式更改Tableview框架后刷新RedView的位置?