Я пытаюсь создать приложение для iPhone, которое всегда находится в альбомной ориентации, используя шаблон приложения Utility. Вот что я сделал:
- Создайте новый проект приложения iPhone, используя шаблон Utility Application
- В Интерфейсном Разработчике поверните все виды на 90 градусов.
- В Интерфейсном Разработчике добавьте метку к середине MainView. Растяните его по всему виду, установите выравнивание по центру и установите пружины с автоматическими размерами, чтобы они могли растягиваться по горизонтали.
- В Info.plist добавьте ключ "UIInterfaceOrientation" со значением "UIInterfaceOrientationLandscapeRight"
- В классах контроллера измените методы shouldAutorotateToInterfaceOrientation на «return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);"
- Запустите приложение.
Когда я запускаю свое приложение, оно отображается в горизонтальной ориентации, но основной вид охватывает только верхнюю половину экрана и растягивается по горизонтали. Я получаю одинаковые результаты как на симуляторе, так и на реальном устройстве. Я видел это с версиями 2.2 и 2.2.1 SDK.
Мне удалось обойти эту проблему, добавив следующий шаг к приведенному выше:
- Добавить "self.view.autoresizesSubviews = NO;" в метод viewDidLoad RootViewController после "[super viewDidLoad];".
Если я сделаю это, то все будет работать как положено. Но это похоже на взлом. Зачем это нужно?
Я не думаю, что это проблема трансформации. Все элементы нарисованы в правильной ориентации и с правильным масштабированием. Кажется, проблема в том, что прямоугольники границ основного вида становятся фанки. Похоже, что высота основного вида уменьшается чуть больше половины, а ширина увеличивается примерно на 50%.
Если я выполняю точно такой же набор шагов, используя шаблон приложения на основе представления вместо утилиты, тогда все работает, как ожидалось. Поэтому я уверен, что проблема связана с тем, как приложение Utility управляет своими представлениями.
Кто-нибудь понимает, что здесь происходит?