2012-12-29 135 views
0

我的viewController1有一個子視圖控制器(viewController2)。 viewController2.viewviewController1的觀點的子視圖。在用戶的操作中,我從它的超級視圖中刪除viewController2的視圖。過了一段時間,我不得不再次添加它作爲子視圖。設備方向更改問題

問題是,如果用戶旋轉設備,而viewController2不可見,在將其再次添加到viewController1的視圖後,它是框架,並且它的子視圖被放置爲設備仍處於舊方向。即使是viewController2.view.frame也有高度和互換。

有沒有人有解決這個問題?提前致謝!

回答

2

看起來沒有看到你的代碼,我猜你保持一個參考視圖控制器2,即使它是不可見的。在這種情況下,你需要將視圖旋轉事件轉發到控制器,以便它知道像這樣旋轉(執行此操作,你要轉發每個事件):

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 

    // Forward to view controller 2 if it is not displayed 
    if (!viewController2.view) { 
     [viewController2 willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; 
    } 
} 

更好的設計可能是隻需將視圖控制器2的視圖設置爲hidden而不是將其刪除,它仍然會在沒有手動干預的情況下獲取事件。

+0

謝謝,它完成了這項工作。出於好奇,我如何將視圖旋轉事件轉發給viewController2(是的,我有一個引用它)? – Levi

+0

我爲你增加了一個例子。 – lnafziger

0

讓我猜你的問題。你想在方向上顯示不同的UIView基礎嗎?

這是關於更新您的viewController2加載方向的筆尖基地。由於方向的原因,您可以使橫向和縱向筆尖支持您的不同用戶界面。嘗試從這個Answer

希望它可以幫助你

+0

不,那不是。當用戶旋轉設備時,我有一個不在屏幕上的VC。當它出現時,它的行爲就像它將在舊的方向(當它消失時) – Levi