2009-12-21 4 views
1

Итак, сегодня я реализую ландшафтный режим для своего приложения. Это приложение opengl es. Я повернул его на 90 градусов. Первое, что я замечаю, это то, что прикосновения больше не работают. Причина в том, что вызов locationInView по-прежнему дает координаты, как если бы приложение находилось в портретном режиме.Ландшафтный режим и locationInView in opengl es

Как люди обычно справляются с этим? Должен ли я писать свою собственную версию locationInView, чтобы учесть ориентацию телефона? Или есть лучший способ?

ответ

2

Это поведение по умолчанию. Независимо от того, находится ли iPhone в портретном или ландшафтном режиме, координаты экрана не меняются, поэтому вам нужно будет настроить их в своем приложении.

1

В основном два подхода, каждый со своими недостатками/активами.

  1. Вы можете прикрепить свой GLview к диспетчеру просмотра и позволить ему обрабатывать события вращения и преобразовывать координаты окна в координаты «просмотра». Это самый простой способ, но производительность вашего чертежа может быть скомпрометирована.

  2. Управление вращением самостоятельно. Вам нужно будет добавить свои собственные методы для работы с вращениями, вызванные уведомлением UIDeviceOrientationDidChangeNotification. Этот метод должен включать команды GL для поворота матрицы, перевода штрихов и т. Д.