2011-03-18 74 views
0

我正在爲使用OpenGL的iPad構建應用程序,並遇到屏幕旋轉問題。應用程序本身工作正常,並在所有四個方向上正確顯示,但其他元素僅部分響應設備旋轉。iPad OpenGL屏幕旋轉問題(多任務欄和彈出框不旋轉)

OpenGL使用變換矩陣處理應用程序的旋轉。這一切都很好。默認圖像也以正確的旋轉顯示。

然而,多任務欄並不像它應該那樣旋轉。它出現在應用程序被打開的一面。因此,如果我打開應用程序,然後雙擊home按鈕它是在正確的一面,但旋轉設備後它仍然在同一側,直到應用程序關閉並重新打開。當顯示此欄時,OpenGL應用程序會旋轉以匹配欄的位置。

對話框,例如「登錄遊戲中心」彈出窗口也未正確旋轉。他們似乎以標準的縱向方向出現。

我不確定是否有任何其他具體的細節需要確定問題,但任何建議都非常感激。

+0

好吧,這些聽起來像'已知'操作系統的bug ...我有一些在非OpenGL應用程序,特別是與本地視頻播放器,做了一個討厭的技巧來檢查系統的方向與現實。 – jv42 2011-03-18 21:02:16

回答

0

我似乎已經把一些解決方案放在一起看一些其他線程的片段。我認爲它解決了問題。

我有一個主要的類,它控制了我的大部分應用程序。它已經被註冊爲接收這樣的設備旋轉的通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 

我添加了幾行定向處理函數手動設置狀態欄的位置:

 
- (void) updateOrientation { 
    if ([[UIDevice currentDevice] orientation] < 5 && [[UIDevice currentDevice] orientation]>0) { 
     orientation = [[UIDevice currentDevice] orientation]; 
     [UIApplication sharedApplication].statusBarOrientation = orientation; 
    } 
} 

有條件限制的處理程序只對風景和肖像方向作出反應,而不是正視和麪朝下。

如果有人有更好的解決方案,我仍然希望聽到它,否則,希望這可以幫助別人。