2016-02-12 57 views
0

我在界面构建器中为视图创建了一个笔尖。它的子视图放置的约束条件是它们将按照视图框架的大小进行缩放。UIView的子视图渲染范围

我使用一个辅助方法从其笔尖初始化视图:

+ (TinyTestResultsView *)ttrView { 
    TinyTestResultsView *ttrV = [[[NSBundle mainBundle] loadNibNamed:@"TinyTestResultsViewNib" owner:nil options:nil] firstObject]; 
    [ttrV commonInit]; 
    return ttrV; 
} 

在一个视图控制器的viewDidLoad,我初始化对象使用ttrView方法和将其添加为子视图self.view。然后VC向网络发出呼叫以获取一些信息,然后根据需要将约束添加到self.view和子视图中以放置它。它被正确放置大小&大小 - 但是该视图显示为没有子视图的白色框。 为什么子视图在视图之外渲染?

如果我在Xcode中使用Debug View Hierarchy,然后尝试查找子视图,我发现它们在框架外渲染,并且它们不符合NIB中的自动布局规则。我使用这个完全相同的技术为不同的自定义UIView /笔尖,所以我不知道什么可能会发生错误。

回答

0

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

+0

我有'self.translatesAutoresizingMaskIntoConstraints = NO;'in'commonInit' – jdelman

+0

你有没有警告与nib文件中的这个视图的约束有关? – curious

+0

在预览中尝试[看](http://cdn3.raywenderlich.com/wp-content/uploads/2014/12/Screen-Shot-2015-09-05-at-1.39.09-PM.png)笔尖文件(如果你还没有这样做)。视图的布局是否正确? – curious