2016-02-12 95 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