2014-01-19 24 views
0

我測試了OpenGL的概念,所以我的應用程序包含了OpenGL視圖,並沒有別的窗口。繃OpenGL的內容後,模態視圖控制器

我的經驗在那裏,一個UIViewController有模式提出後,在OpenGL的視圖中的內容被拉伸(翻倍?)垂直的一個問題。

的應用僅限於景觀的權利,我只是此刻畫立方體進行測試。

另一個奇怪的事情是,當我測試過這一段時間回來(在iOS 5或6),遊戲中心排行榜視圖控制器會導致這種情況發生。現在它不會 - 它可以在不影響底層OpenGL視圖的情況下顯示和解散 - 但是我顯示和解散的任何自己的UIViewController都會導致問題出現。

我可以通過跟蹤何時顯示視圖控制器,然後相應地縮放OpenGL內容來處理它,但這看起來很不合適 - 在我看來,內容不應該開始伸展。

編輯:所以,我登錄了包含視圖和OpenGL的視圖的框架,這是我得到了什麼:

Frame before (this view): {{0, 0}, {320, 568}} 
Frame before (glview):  {{0, 0}, {568, 320}} 
Frame after (this view):  {{0, 0}, {568, 320}} 
Frame after (glview):  {{0, 0}, {568, 320}} 

所以你可以看到,寬度和容器視線的高度翻轉。儘管如此,我仍然不知道如何解決這個問題 - 再次設置兩個視圖的框架都不起作用,我不知道還有什麼可以嘗試的。

回答

0

好了,所以我不知道爲什麼將框架翻轉其寬度和高度,但我固定它,耶!

當設置GL視圖(這是在viewWillAppear上完成的,因此當另一個視圖控制器被顯示和解除時啓動時出現問題),使用容器視圖的框架設置攝像機以設置寬高比爲如下:CGSize layerSize = self.view.layer.frame.size;

該視圖是翻轉其寬度和高度的視圖,因此當再次設置GL視圖時,縱橫比導致內容被拉伸。由於我知道我的GL視圖始終是屏幕的全部寬度和高度,所以我通過使用屏幕邊界來設置相機/屏幕高寬比:CGSize layerSize = [UIScreen mainScreen].bounds.size;

現在它完美地工作了!