2016-07-17 68 views
0

我正在使用Auto Layout和Size Classes。我有主視圖下一個測試圖像這樣:子視圖Rect不等於視圖使用AutoLayout時的Rect

enter image description here

與所有6個約束:

enter image description here

預期的結果應具有測試圖具有完全相同的矩形的值。但事實並非如此。我究竟做錯了什麼?我怎樣才能達到這樣的行爲?

viewDidLoad中記錄:

iPhone 5:

主視圖 - 的NSRect:{{0,0},{320,568}}

測試視圖:的NSRect:{{0,0 },{600,600}}

iPhone 6:

主視圖 - 的NSRect:{{0,0},{375,667}}

測試視圖:NSRect:{{0,0},{600,600}}

回答

1

正如在本答案always 600x600中指定的,您需要在viewDidLayoutSubviews中打印您的日誌。視圖是否正確顯示?

如果您將邊緣設置爲與父項相同,但您不需要寬度和高度約束,但這是次要的。

希望這會有所幫助,評論如果你還有問題,祝你好運。

+0

OMG ....謝謝。這是完全合理的。這意味着我應該在'viewDidLayoutSubviews'函數中配置我的視圖。 – docchang

+0

@docchang:我更喜歡在[viewWillLayoutSubviews]中執行我的視圖配置(https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/改爲UIViewController/viewWillLayoutSubviews)。在這種方法中,'[[UIApplication sharedApplication] statusBarOrientation]'正確地反映了任何飛行中方向更改轉換的最終狀態,這會影響佈局。所以,如果我需要在一個方向改變的情況下交換視圖,我會在這裏執行。 – jp2g