2014-10-31 74 views
0

我有一個觀點和一個子視圖是UIView型與約束,這樣它的寬度等於它的父(我用auto Layout) 然而,當我嘗試得到這個子視圖中的viewController的框架財產如何獲得根視圖的子視圖的實際幀ViewControtroller

- (void)viewDidLoad { 
NSLog(@"%@",NSStringFromCGRect(self.subview.frame));//get subview's frame 
} 

方法,我總是得到{{0, 20}, {600, 320}}這意味着它的寬度是600

但實際寬度爲320,這也意味着該子視圖還沒有當這個方法被調用時已經被覆蓋,我怎麼能得到這個實際的寬度在這種方法?

任何幫助表示讚賞,謝謝。

+0

這聽起來不對。 'UIViewController'默認沒有'subview'屬性。你是否創建了這個屬性?你如何將subView添加到視圖? – anthonyliao 2014-10-31 03:22:33

+0

@anthonyliao是我有這個插座屬性是子視圖的屬性 – 2014-10-31 03:26:24

+0

它會給你在viewDidAppear正確的結果。 viewDidLoad獲取子視圖的幀太早了。 – rdelmar 2014-10-31 04:21:18

回答

0

子視圖的框架在viewDidLoad中無效 - 它尚未佈置。將您的代碼移到viewDidLayoutSubviews。

如果你發現你有需要你看看viewDidLoad中框架的依賴,你可能沒有你的約束正確設計。尋找可以在視圖之間添加更多關係的區域。如果這沒有幫助,請嘗試以編程方式修改約束 - 使用自動佈局時,幾乎不需要查看或顯式更改視圖的框架。

相關問題