Поворот устройства при отображении контроллера модального вида - PullRequest
2 голосов
/ 25 октября 2011

У меня есть приложение OpenGL, которое поддерживает динамическую ориентацию устройства.Я могу повернуть устройство в любую из 4 физических ориентаций, и все работает как положено.

Теперь я добавил контроллер модального представления, чтобы вы могли получить представление настроек (это не OpenGL).Контроллер модального вида также поддерживает любую ориентацию устройства.

Однако, если я представляю контроллер модального вида в ориентации A (например, в портретной ориентации) и отклоняю его в ориентации B (например, в альбомной ориентации вправо), после его уменьшения,представление OpenGL повреждено (соотношение сторон выглядит неправильно).Я должен сориентировать устройство в другой ориентации, чтобы представление OpenGL «исправляло» себя.

Когда контроллер модального представления закрывается, приложение как будто думает, что оно уже находится в ориентации B, поэтому оно неникогда не поворачивать представление OpenGL.

Если я отключу вращение на контроллере модального вида, то, если я представлю модальный контроллер в ориентации A, поверните устройство в ориентацию B (контроллер модального вида больше не вращается) ипри отклонении контроллера представление OpenGL получает willRotateToInterfaceOrientation / didRotateFromInterfaceOrientation и правильно ориентирует на ориентацию B.

Есть ли способ сохранить динамическую ориентацию модального контроллера, но при этом представление OpenGL также может правильно вращаться после модального контроллерауволен?

Спасибо.

1 Ответ

1 голос
/ 25 октября 2011

У меня была похожая проблема с листом настраиваемых действий, и я решил, что самым простым ответом будет временное запрещение вращения во время представления представления.Вы можете увидеть пример этого в приложении Apple Notes, при каждом представлении листа действий ориентация блокируется.

Я знаю, что вы уже попробовали это, и это работает, я просто думаю, что вы должны рассматривать это как правильное решение.

Я не уверен, как решить это иначе, вам, вероятно, потребуется сохранить любые изменения в ориентации в вашем контроллере модального представления и передать их обратно в контроллер представления OpenGL, одновременно или один раз вточка отклонения просмотра настроек, затем вручную перерисовать.

...