【发布时间】:2015-01-21 17:12:19
【问题描述】:
我的 iOS 自定义 UITableViewCell 需要以下布局:
|查看基本信息 |长长的矩形视图列表 |
所以,结构如下。我有一个水平滚动的滚动视图,左侧有“信息容器视图”,矩形视图列表应该出现在信息容器的右侧。自定义 UITableViewCell 是 o
我试图添加以下约束:
[self.scrollView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:[NSString stringWithFormat:@"H:[info]-space-[%@]", key]
options:0 metrics:metrics
views:viewsDictionary]];
其中 info 是“信息容器”,“key”是指动态添加的视图。这会导致以下错误:
2015-01-21 16:37:44.603 AirCourts[3264:1553444] The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x174a83840 H:[UIView:0x17018f970]-(20)-[FieldSlotView:0x1701bebc0]>
Constraint: <NSLayoutConstraint:0x174a83840 H:[UIView:0x17018f970]-(20)-[FieldSlotView:0x1701bebc0]>
(...)
View not found in container hierarchy: <UIView: 0x17018f970; frame = (0 0; 320 568); autoresize = RM+BM; layer = <CALayer: 0x170e37c20>>
That view's superview: NO SUPERVIEW
所以,它似乎是指“信息容器”没有超级视图的事实。因此,我决定对其进行测试:
如您所见,它不被假定为滚动视图的后代。鉴于 IB 层次结构似乎是正确的,为什么会发生这种情况?由于某种原因,我是否需要在添加约束之前刷新布局,或者它是否会丢失层次结构信息?
提前致谢!
【问题讨论】:
-
您是否在 viewDidLoad 中检查后代控制器?您应该在 ViewDidLayoutSubviews 或之后调用它,而不是在此之前。
标签: ios objective-c autolayout constraints