2011-09-08 82 views
4

如果我有幾個UIViewControllers壓入我的導航堆棧,那麼何時/何時不可見(底部)視圖控制器重新佈局?它們是否都與可見視圖控制器同時放置,或者只有當它們彈出到顯示堆棧上時才放棄?方向更改,何時都是我的視圖控制器旋轉?

編輯: 我目前自己管理調整子視圖的大小(而不是設置autoresizing = YES)。我在willAnimateRotationToInterfaceOrientation方法中調整大小,以便它動畫很好。我猜這個方法不會被調用任何不在顯示棧頂部的uiviewcontroller。那麼是否有一種內置的方法可以知道當前的uiviewcontroller是否是正在顯示的uiviewcontroller,如果不是,應該覆蓋哪種方法來重新佈置不在顯示堆棧頂部的uiviewcontrollers的子視圖?

謝謝!

陽光

+0

我想這是默認情況下發生的。假設你在導航堆棧上向下鑽取了5個級別,將一個viewController放在另一個viewController上。如果更改設備方向,則在第5級。它重新佈局頂部viewController。現在在這個方向上,如果你開始回到level4-> level3以上,我認爲重新佈局是自動完成的。你的情況不是這樣嗎?如果不是,我們可以制定解決方案。 – SayeedHussain

回答

0

我建議檢查方位viewWillAppear。如果你在這裏檢查方向,你可以放心,一個視圖總會以給定方向的正確佈局顯示。但你仍然需要在willAnimateRotationToInterfaceOrientation中旋轉它。

-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)) 
    { 
     [self layoutForPortrait];  
    } 

    else if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)) 
    { 
     [self layoutForLandscape];     
    } 
} 
相關問題