我有一個支持動態設備方向的OpenGL應用程序。我可以將設備旋轉到4種物理方向中的任何一種,並且一切按預期工作。顯示模態視圖控制器時的設備旋轉
現在我添加了一個模態視圖控制器,以便您可以獲取設置視圖(這是非OpenGL)。模態視圖控制器也支持任何設備方向。但是,如果我以方向A(例如縱向)呈現模態視圖控制器並將其以方向B(例如橫向右)排除,則在其昏暗後,OpenGL視圖已損壞(縱橫比看起來不正確) 。我必須將設備定向到OpenGL視圖的不同方向以「修正」自身。
當模式視圖控制器被解散時,它就像應用程序認爲它已經在方向B,所以它不會旋轉OpenGL視圖。
如果我禁用模態視圖控制器上的旋轉,那麼如果我以方向A呈現模態控制器,將設備旋轉到方向B(模態視圖控制器不再旋轉)並關閉控制器,則OpenGL視圖將獲取willRotateToInterfaceOrientation/didRotateFromInterfaceOrientation並正確定向到方向B.
有什麼方法可以保留模態控制器的動態方向,但在模態控制器關閉後OpenGL視圖也能正確旋轉嗎?
謝謝。
您使用哪種機制來檢測旋轉變化以更新OpenGL視圖?什麼管理可能會調整其框架的OpenGL視圖的呈現? – Jonah
OpenGL視圖控制器的shouldAutorotateToInterfaceOrientation返回YES。在OpenGL視圖控制器上調用willRotateToInterfaceOrientation。在OpenGL視圖上調用layoutSubviews,釋放OpenGL緩衝區。下一次調用渲染函數時,將使用交換的寬度/高度重新創建OpenGL緩衝區。 – iraxef
當模式修復爲縱向模式時,你是如何得到它的工作的?我同樣的問題,只是 – jfisk