2010-11-11 37 views
4

我有一個UIViewController子類,其視圖配置在一個NIB文件中。該視圖有一個UIScrollView子視圖。UIScrollView界限尚未調整在「viewDidLoad」

UIScrollView佔用幾乎整個NIB文件,但它的超級視圖作爲子視圖添加到更小的視圖(配置在不同的NIB中) - 例如, UIScrollView是它自己的NIB的80%,但最終只佔應用程序窗口高度的10%。

當我在viewController的viewDidLoad方法中調用[scrollView bounds] .size.height時,我得到了scrollView相對於它自己的NIB的高度,而不是它的最終高度(如它的超級視圖所指示的那樣調整大小)窗戶高度的80%而不是10%)。

如果稍後我調用[scrollView bounds] .size.height(例如處理旋轉事件),我會得到正確的值。

我怎樣才能得到正確的重新大小的值最初?

回答

7

您是否嘗試過在viewWillAppear:viewDidAppear中處理?

+0

使用「viewDidAppear」工作。在「主」視圖控制器中,我分配並啓動「滾動」視圖控制器(其NIB包括UIScrollView)。在將視圖控制器的視圖添加爲主視圖控制器視圖的子視圖之後,我在滾動視圖控制器上調用了viewDidAppear,並在那裏處理邊界檢索。謝謝! – 2010-11-11 03:41:17

0

假設我在跟隨,加載視圖控制器後必須有一些點,在這個點你抓住.view並將其插入到另一個子視圖中?如果是這樣,那麼邊界將被調整。您無法將它們放入viewDidLoad中,因爲該視圖無法瞭解將來如何處理它。即使你的調用將它作爲子視圖插入是你在加載視圖控制器後首先要做的事情,但是它是視圖訪問器,它會導致視圖加載,因此也就是viewDidLoad 。

由於邊界有一個getter和setter,它應該是鍵值編碼兼容的,在這種情況下,您可以使用viewDidLoad在邊界上註冊一個觀察者,並在邊界發生變化時執行您需要執行的任何操作。