我有一個應用程序,使用UITabController
,每個標籤是UINavigationController
。我的UINavigationControllers
之一的根是UIViewController
。在UIViewController中佈置和設定子視圖的大小
在該視圖控制器的視圖中,我想佈置一些子視圖,但我很困惑,在哪裏如何將它們放在一個獨立於分辨率的方式(即不是硬編碼值,如320px,480px, 44px等)。
當視圖完全加載並呈現在垂直iPhone上時,其高度將爲367px = 480 - 20(狀態欄) - 44(導航欄) - 49(標籤欄)。
在視圖控制器中,我目前在viewDidLoad
方法中創建了所有子視圖。但是,看起來在這種方法中,視圖的當前高度是460px(self.view.bounds.size.height
)。所以在設置我的子視圖時,我無法正確計算任何東西的大小。
內viewWillAppear:
方法,認爲不知道這是適當的大小,但是這意味着設置&每個視圖會出現時間(例如標籤的變化來計算子視圖的框架或子視圖控制器導航堆棧上彈出。
是在viewWillAppear:
?
適當做這個佈局的唯一方法我已經使用自動尺寸屬性嘗試(父母的autoresizesSubviews
& autoresizingMask
),但他們似乎並沒有在所有的工作!?做這些只有在視圖全部設置後才能生效,然後調整大小(手動/方向更改?)。
如果有人能告訴我爲什麼autoresizing不起作用,以及如何通過不對任何大小進行硬編碼來最好地解決問題,我將不勝感激。
快速說明,UIViewController沒有,也沒有調用layoutSubviews。這是UIView上的一個方法。但是,您可以製作一個名爲layoutSubviews的方法,並從viewWillAppear調用該方法: – casademora 2011-04-10 19:27:07
也沒有「loadViews」。我認爲你的意思是「viewDidLoad」,在這種情況下,值得一提的是在viewDidUnload中也釋放這些視圖。 – DougW 2011-06-01 00:19:07
有一個loadView方法,但viewDidLoad通常是添加子視圖最方便的地方 – 2011-09-04 00:42:23