2012-01-17 42 views
1

在ipad上,在ios目標C中,我遇到了在一個模態視圖中旋轉移動的問題。我在shouldAutoRotate方法中給出元素的位置,並且其父視圖也可以旋轉,但是當我旋轉模態視圖時,元素不會放在正確的位置。模態視圖控制器不能正確旋轉

欲瞭解更多的信息,如果我打開肖像模式的看法,我得到這樣的數據:

<UIView: 0x72bc160; frame = (0 0; 768 1004); clipsToBounds = YES; 
autoresize = W+H; layer = <CALayer: 0x13f324f0> 

而且在橫向模式:

<UIView: 0x1358f3b0; frame = (0 0; 768 748); clipsToBounds = YES; 
autoresize = W+H; layer = <CALayer: 0x1358f3e0>> 

但是,如果我旋轉視圖水平構架變化由垂直框架...

我做錯了什麼?

+0

我很難理解問題究竟是什麼。你是否嘗試從根視圖控制器呈現模態視圖? – thumbsup 2012-01-17 08:58:23

+0

檢查是否應該在模態視圖中對應自動旋轉.. – vishy 2012-01-17 08:59:42

回答

5

我對視圖控制器的旋轉有很多樂趣。有兩件事要記住:

  1. 假設你覆蓋整個屏幕(並沒有做任何具體的子視圖轉換),請確保您從最廣泛的視圖呈現模態視圖控制器控制器,通常是應用程序的根視圖控制器。
  2. 確保每個包含視圖控制器的概念都將旋轉事件傳遞給其概念子視圖控制器。 (這是非常不明確的預先的iOS 5)

當這些事情發生在我身上,那是因爲在後臺視圖控制器得到了旋轉事件,但我是從呈現特定視圖控制器是忽略它們並且不將它們傳遞給模態視圖控制器,導致不一致。

+0

非常感謝。我把模態視圖放在一個不同於根視圖的視圖中:) – damacri86 2012-01-17 12:31:15

+1

另一件事:如果您從另一個視圖控制器呈現一個模態視圖控制器,並且該模式視圖控制器也是以模態方式呈現,則可能會遇到不可預知的界面旋轉問題。如果你在這樣的模式鏈中呈現視圖控制器,它可能是一個糟糕的體系結構的跡象... – 2012-03-15 21:22:06

+1

@EricGoldberg:好的是,如果你總是記得從最廣泛的視圖控制器呈現視圖控制器,這總是「頂級」視圖控制器,並且您避開了這個問題。 – Jesper 2012-03-20 09:13:28