我在界面构建器中为视图创建了一个nib。它的子视图具有约束条件,以便它们可以根据视图框架的大小进行缩放。
我使用辅助方法从其笔尖初始化视图:
+ (TinyTestResultsView *)ttrView {
TinyTestResultsView *ttrV = [[[NSBundle mainBundle] loadNibNamed:@"TinyTestResultsViewNib" owner:nil options:nil] firstObject];
[ttrV commonInit];
return ttrV;
}
在视图控制器的viewDidLoad
期间,我使用ttrView
方法初始化对象,并将其作为子视图添加到self.view
。然后VC调用网络获取一些信息,然后根据需要向self.view
和子视图添加约束以放置它。它被正确放置& size - 但视图显示为没有子视图的白色框。 为什么子视图会在视图外呈现?
如果我在Xcode中使用Debug View Hierarchy然后尝试查找子视图,我会看到它们在框架之外被渲染,并且它们不符合NIB的自动布局规则。我使用这种完全相同的技术用于不同的自定义UIView / nib,所以我不确定可能发生的错误。
答案 0 :(得分:0)
您的视图似乎需要将translatesAutoresizingMaskIntoConstraints
设置为NO
。以这种方式从Nib文件加载视图时,此属性设置为YES
,这意味着系统会创建一组约束,这些约束复制视图的自动调整掩码指定的行为。当你使用autolayout时,这不是你想要的。