Операционная система iOS. Автоматический поворот.

Устройства iPhone и iPad, а также другие устройства, работающие под управлением операционной системы iOS, представляют собой изумительные изобретения. Инженеры компании Apple сумели втиснуть максимум функциональных возможностей в очень маленькую коробочку. Например, в этих устройствах существует механизм, позволяющий использовать их как в портретной (вытянутой в высоту), так в альбомной (растянутой в ширину) ориентации, а также изменять эту ориентацию при повороте устройства. Превосходное проявление этой функциональной возможности, которая называется автоматическим поворотом (autorotation), можно увидеть в веб-браузере системы iOS Mobile Safari. Как и многие приложения для системы iOS, браузер Mobile Safari изменяет свое представление в зависимости от того, как именно пользователь держит устройство. Это позволяет максимально использовать доступное пространство на экране. Сейчас  мы подробно обсудим механизм автоматического поворота. Начнем с обзора деталей этого механизма.

Механизм автоматического поворота в iOS

Режим автоматического поворота в iOS есть не у всех приложений. Некоторые приложения для устройства iPhone поддерживают только одну ориентацию. Например, фильмы можно просматривать только в альбомной ориентации, а контакты можно редактировать только в портретной. Однако это не относится к устройству iPad, для которого компания Apple рекомендует, чтобы практически все приложения (за исключением игр, разработанных для конкретного режима) поддерживали любую ориентацию.

Практически все собственные приложения для устройства iPad, разработанные компанией Apple, прекрасно работают в обоих режимах. Многие из них используют разные ориентации, для того чтобы продемонстрировать разные представления ваших данных. Например, приложения Mail и Notes используют альбомный режим, чтобы показать список объектов (папок, сообщений или заметок) слева и выбранный объект — справа, а портретная ориентация позволяет сконцентрировать внимание пользователя на деталях только что выбранного объекта.
Итак, если автоматический поворот расширяет возможности пользователя, добавьте его в свое приложение. К счастью, компания Apple проделала огромную работу, чтобы скрыть сложности автоматического поворота в операционной системе iOS и в пакете UIKit, поэтому реализация этой функциональной возможности в ваших приложениях для системы iOS является довольно простой.

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

В устройствах iPhone и iPod touch представление начинает работу в портретном режиме, имеющем 320 пикселей в ширину и 480 пикселей в высоту.

Портретный режим подразумевает 768 пикселей в ширину и 1024 пикселя в высоту. Если ваше приложение имеет строку состояния (status bar), то размер экрана, действительно доступного для вашего приложения, может быть уменьшен на 20 пикселей в вертикальном направлении.
Строка состояния — это полоска высотой 20 пикселей, расположенная в верхней части экрана. На нее выводятся сила сигнала, время и заряд батареи.

Когда телефон переключается в альбомный режим, представление поворачивается вдоль окна приложения и изменяет размеры, чтобы заполнить все окно: 480 пикселей в ширину и 320 в высоту (iPhone и iPod touch) или 1024 пикселя в ширину и 768 пикселей в высоту (iPad). Как и прежде, размер экрана по вертикали, выделенный для приложений, имеющих строку состояния (а это большинство приложений), уменьшается на 20 пикселей.

 

Дисплей Retina — «Виртуальное разрешение» в iOS

Здесь может возникнуть вопрос: почему мы не упоминаем о дисплее Retina в устройствах iPhone 4 и iPod touch? Дисплей Retina — это маркетинговый термин компании Apple, которым она обозначает экраны с высоким разрешением на устройствах iPhone 4 и iPod touch. Разрешение этих экранов вдовое выше обычного: 640 на 960 пикселей. Благодаря весьма остроумной обработке графических изображений, реализованной компанией Apple, нас обычно не интересует проблема более высокого разрешения (если это нам действительно не требуется).
Разрешение экрана дисплея Retina вдвое выше в обоих направлениях, но, создавая приложения на платформе Cocoa Touch, мы обычно имеем дело с обычными устройствами iPhone и iPod, имеющими разрешение 320?480 пикселей.
Считайте это “виртуальным разрешением”, которое операционная система iOS автоматически отображает в реальное физическое разрешение.

Большую часть по фактическому переносу пикселей на экране выполняет операционная система iOS.
Основная работа, которую должно выполнить ваше приложение, сводится к тому, чтобы обеспечить правильный внешний вид после изменения размеров экрана. Ваше приложение может реализовать три варианта реакции на поворот устройства. Какой из них выполнить, зависит от сложности вашего интерфейса. В простых интерфейсах можно просто задать корректные атрибуты автоматического изменения размеров (autosize) всех объектов, образующих интерфейс.

Автоматическое изменение размеров в операционной системе iOS

Атрибуты автоматического изменения размеров сообщают устройству, работающему под управлением операционной системы iOS, как должны функционировать элементы управления, когда содержащее их представление изменяет размеры. Если вы ранее работали на платформе Cocoa под управлением операционной системы Mac OS X, то уже знакомы с этим подходом, поскольку именно он используется для того, чтобы определить поведение элементов управления среды Cocoa в ситуации, когда пользователь изменяет размеры окна, которому они принадлежат.
Автоматическое изменение размеров выполняется быстро и просто, но подходит не для всех приложений. Более сложные интерфейсы должны реагировать на изменение размеров иначе. Для более сложных представлений используются два дополнительных подхода.

  • Один из них подразумевает ручную перестановку объектов при повороте представления
  • Второй подход предусматривает реализацию двух разных версий представления в программе Interface Builder — одной для портретного режима, а другой для альбомного.

В обоих случаях необходимо выполнить замещение методов из класса UIViewController в классе контроллера вашего представления.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *