Ландшафтный режим и расположение InView в открытых окнах
Поэтому сегодня я реализую ландшафтный режим для своего приложения. Это открытое приложение. Я повернул его на 90 градусов. Первое, что я замечаю, это то, что прикосновения больше не работают. Причина в том, что вызов locationInView по-прежнему дает координаты, как будто приложение находится в портретном режиме.
Как люди обычно справляются с этим? Нужно ли писать собственную версию locationInView, чтобы учесть ориентацию телефона? Или есть лучший способ?
2 ответа
Это поведение по умолчанию. Независимо от того, находится ли iPhone в книжной или альбомной ориентации, координаты экрана не меняются, поэтому вам нужно будет настроить это в своем приложении.
В основном два подхода, каждый со своими недостатками / активами.
Вы можете прикрепить свой GLview к контроллеру представления и позволить ему обрабатывать события вращения и переводить координаты окна в координаты вида. Это самый простой метод, но ваша производительность рисования может быть поставлена под угрозу.
Управляйте вращением самостоятельно. Вам нужно будет добавить свои собственные методы для работы с поворотами, управляемыми уведомлением UIDeviceOrientationDidChangeNotification. Этот метод должен включать команды GL для поворота матрицы, перевода касаний и т. Д.