Ландшафтный режим и расположение InView в открытых окнах

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

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам