|
Май
15
|
В этом уроке мы создадим приложение на основе представления (view-based), работающее исключительно в альбомной ориентации (landscape-mode only) (экран по ширине больше, чем по высоте) вместо привычной книжной (где экран выше и уже).
Создаем новое view-based приложение.
Откройте Xcode.
Создайте новый проект iPhone OS Project, выполнив File -> New Project…
Убедитесь, что пункт “Application” (Приложение) относится к меню “iPhone OS“, затем выберите “View-Based Application“.
Щелкнув на кнопке “Choose...”, наберите в поле “Save As:” название “LandscapeOnlyViewBasedTutorial“, подтвердив его кнопкой “Save“.
При желании можно воспользоваться кнопкой “Build and Go” на панели инструментов (в крайнем слева раскрывающемся меню должна быть выбрана опция “Simulator | Debug“) — приложение запустится в симуляторе, но пока в книжной ориентации. Пора это исправить (не забудьте выйти из iPhone Simulator перед продолжением).
Переходим от книжной ориентации к альбомной.
Для начала добавим новую пару ключ–значение в файл Info.plist.
В меню проекта “Groups & Files” откройте папку “Resources“. Щелкнув правой кнопкой мыши на файле Info.plist, выберите Open As > Source Code File.
В нижней части файла (прямо перед тэгом </dict>) добавьте следующий код:
1 2 | UIInterfaceOrientation UIInterfaceOrientationLandscapeRight |
Получив в результате:
Сохраните изменения.
Если попытаться запустить приложение сейчас, оно откроется в альбомном формате, но тут же перейдёт в книжный. Еще один момент — ненужная строка состояния в правой части экрана. Значит, придется поработать еще.
Теперь откройте папку “Classes“, выделив файл LandscapeOnlyViewBasedTutorialAppDelegate.m.
Найдите метод applicationDidFinishLaunching и добавьте приведенную ниже строку (после [window makeKeyAndVisible];):
1 | [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight]; |
Снова сохраните изменения.
При попытке редактирования проекта появляется предупредительная надпись - warning: ‘UIDevice’ may not respond to ‘-setOrientation:’. Ее можно смело игнорировать. Мы работаем с не вошедшей в официальную документацию опцией UIDevice.
ДОПОЛНЕНИЕ: Сообщение setOrientation для UIDevice нужно только для запуска симулятора iPhone Simulator сразу с нужной ориентацией экрана. Им можно пренебречь, если речь идет о тестировании на устройстве и/или “конечном” продукте. Тогда предупреждение выводиться не будет.
Теперь выберите файл LandscapeOnlyViewBasedTutorialViewController.m и отыщите метод shouldAutorotateToInterfaceOrientation.
Строку” return” откорректируйте следующим образом:
1 | return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); |
Сохранив изменения, выполните “Build and Go“. Па-бам! Перед нами работающее исключительно в альбомной ориентации приложение. Проверить это можно с помощью команд из меню Hardware — Rotate Left (Повернуть влево) и Rotate Right (Повернуть вправо). Экран останется в прежнем положении.
Чтобы закрепить успех, добавим несколько дополнительных элементов (выйдите из iPhone Simulator, если еще не сделали этого).
Добавляем в представление элементы интерфейса.
Откройте папку “Resources” и дважды щелкните на файле LandscapeOnlyViewBasedTutorialViewController.xib.
Результатом станет открывшийся в редакторе Interface Builder файл .xib. В окне “View” щелкните на стрелку вращения в правом верхнем углу, переведя представление в альбомный режим.
Перетащите в представление несколько элементов пользовательского интерфейса из библиотеки Library (если библиотека не отображается, вызовите ее командой Tools > Library). Выберите следующие элементы: Navigation Bar (поместите под панелью состояния), Label (выровняйте по левому краю под панелью навигации) и Round Rect Button (выровняйте по правому краю в нижнем углу).
(Чтобы присвоить кнопке название, дважды щелкните по ней.)
Снова сохраните изменения и запустите приложение кнопкой “Build and Go“.
Похоже все три элемента отображаются так, как было настроено в редакторе Interface Builder, и не меняют положения даже при повороте симулятора. Отлично!
Приложение Landscape-mode-only для iPhone готово.









Последние комментарии
Подскажите пожалуйста… Вот...
Код не открывает страницы по простой причине -...
можно было бы использовать сглаживание MSAA, графика была бы на...