2012-06-07 21 views
0

我遇到了一個問題,表明我可能會不當地實現設計模式。我有動態的子視圖,其大小取決於語言。當我呈現模式視圖時,我在viewDidLoad期間設置了佈局。我注意到UILabel對象沒有正確顯示,發現問題在於viewDidLoad期間模態視圖的大小與顯示視圖時的大小不一樣。什麼時候應該在模態視圖(或任何一般視圖)中設置佈局?

模態視圖的期間viewDidLoad中小號768視圖後的寬度已經出現,寬度爲540

這表明,我應該viewWillAppear中期間viewDidLoad中期間被設置的佈局,而不是。

這似乎與我對DRY原理的理解相矛盾,如果我將它應用於執行,因爲佈局一旦加載視圖就不會改變,所以我會在每次視圖時不必要地重複佈局代碼出現。 (我知道,在我的例子,語言設置,可以在模式的演示之間變化,但可能存在這種類型的動態不存在其他的例子。)

我實現非模式佈局以相同的方式查看 - 在viewDidLoad中。

我應該這樣做嗎?

回答

0

假設視圖不會改變是不正確的。例如,改變方向時。在大多數情況下,通常在viewDidLoad中設置視圖,並配合正確的自動調整大小掩碼。如果您在視圖大小調整時需要更好地控制設置,則應該覆蓋viewWillLayoutSubviews/viewDidLayoutSubviews,然後重新排列您的視圖。所以在viewDidLoad中,你可以添加你的子視圖和et內容,然後在佈局中設置它們的大小和位置。

相關問題