UIView的子视图渲染外边界

时间:2016-02-12 17:36:51

标签: ios objective-c uiview autolayout

我在界面构建器中为视图创建了一个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,所以我不确定可能发生的错误。

1 个答案:

答案 0 :(得分:0)

您的视图似乎需要将translatesAutoresizingMaskIntoConstraints设置为NO。以这种方式从Nib文件加载视图时,此属性设置为YES,这意味着系统会创建一组约束,这些约束复制视图的自动调整掩码指定的行为。当你使用autolayout时,这不是你想要的。