Вы находитесь на странице: 1из 270

iOS Human Interface Guidelines

Основы проектирования пользовательского интерфейса

Проектирование для iOS

ВАЖНО

Этот подготовительный документ для API или технологии находится в стадии


разработки. Хотя этот документ прошёл проверку на техническую правильность, его
версия не является окончательной. Эта конфиденциальная информация Apple
предназначена для использования только зарегистрированными пользователями
применимой программы Apple Developer. Apple предоставляет данную
конфиденциальную информацию, чтобы помочь вам подготовиться к применению
технологий и программированию интерфейсов, описанных здесь. Эта информация
может меняться, и программное обеспечение, реализованное в соответствии с этим
документом, должно подвергаться испытанию при окончательном обеспечении
операционной системы и конечной документации. Новые версии этого документа
могут быть предоставлены семенами будущего технологии или API.

iOS воплощает следующие идеи:

 Разница. Пользовательский интерфейс помогает людям понять содержание и


взаимодействовать с ним, но никогда не соперничать.

 Ясность. Текст любого размера остаётся разборчив, иконки — чёткие и


понятные, украшения — изысканные и подходящие, а заострение внимания на
функциональной составляющей обосновывает дизайн.

 Глубина. Видимые слои и реалистичное движение придают энергии и


усиливают восхищение и понимание людей.
Переделываете ли вы своё старое приложение или создаёте новое — примите во
внимание такой подход к работе:

 Во-первых, посмотрите на отношение пользовательского интерфейса к


основным функциям и утвердите его важность.

 Далее, используйте тематику iOS, чтобы оживить дизайн пользовательского


интерфейса и опыт пользователя. Добавление деталей и украшений должно
быть аккуратным, но никогда беспричинным.

 Наконец, будьте уверены, что вы спроектировали пользовательский интерфейс


для использования на различных устройствах и режимах, так, что пользователи
могут наслаждаться вашим приложением в максимально разных условиях.

На протяжении всего процесса будьте готовы бросить вызов прошлому, оспаривать


вопросы, и позвольте акценту на содержании и функциональности способствовать
каждому принятию решения в оформлении.

Подчинение содержанию

Хотя лаконичный и красивый пользовательский интерфейс и плавные движения


являются ключевыми аспектами использования iOS, в корне остаются материалы
пользователей.
Далее приведены некоторые способы для обретения уверенности в том, что дизайн
вашего приложения совершенствует функционал и полагается на материалы
пользователей.

Воспользуйтесь преимуществами всего экрана. Погода является прекрасным


примером такого подхода: Красивое, полноэкранное изображение текущей погоды,
с местом для изображения дополнительных почасовых данных, сразу же передаёт
самую важную информацию.

Пересмотрите визуальные индикаторы физических качеств и реальных условий.


Рамки, перепады и оттенение иногда способствуют утяжелению элементов
пользовательского интерфейса, что может подавить или конкурировать с
содержанием. Вместо этого, уделите внимание содержанию и позвольте
пользовательскому интерфейсу выполнять вспомогательную роль.
Позвольте полупрозрачным элементам пользовательского интерфейса намекать на
содержание между ними. Полупрозрачные элементы — такие как Control Center —
открывают контекст, помогают пользователям видеть, что доступно больше
содержания, и могут обозначать переходное состояние. В iOS полупрозрачный
элемент затемняет только содержание, расположенное прямо за ним, создавая
впечатление взгляда через рисовую бумагу — он не затемняет остальную часть
экрана.

Предоставьте ясность

Предоставление ясности — это ещё один способ убедиться, что содержание является
первостепенным в вашем приложении. Далее приведены некоторые способы для
того, чтобы сделать важнейшее содержание и функциональность ясными и простыми
во взаимодействии.

Используйте много негативного пространства. Негативное пространство делает


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

Позвольте цвету упростить пользовательский интерфейс. Ключевой цвет — как


например жёлтый в Заметках — подчёркивает важную информацию о состоянии и
незначительно выражает комплексность. Это также придаёт приложению
подходящее визуальное оформление. Встроенные приложения используют группу
чистых, ясных системных цветов, которые хорошо выглядят в каждом оттенке и на
тёмном, и на светлом фоне.
Обеспечьте чёткость посредством использования системного шрифта. San Francisco
(системный шрифт iOS) работает с динамическим типом (Dynamic Type) для
автоматической регулировки интервала между знаками и высоты строк, чтобы текст
выглядел хорошо в любом размере и его было легко читать. Используете вы San
Francisco или обычный шрифт, убедитесь в использовании типа Dynamic, чтобы ваше
приложение реагировало, когда пользователь выбирает другой размер шрифта.

Выбирайте клавиши без полей. По умолчанию, все клавиши на клавиатуре без полей.
В области содержимого клавиша без полей использует содержание, цвет и заголовок
дальнейших действий для выражения комплексности. И когда в этом есть смысл,
клавиша области содержимого может отобразить тонкие поля или подсветить фон,
что делает её более заметной.
Используйте глубину для взаимодействия

iOS часто отображает содержимое в чётко выраженных слоях, что выражает


иерархию и местоположение, и это помогает пользователям понять взаимосвязь
между объектами на экране.

На устройстве, которое поддерживает 3D Touch, быстрые, внезапные и скорые


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

Отображения оповещений расположены слоями, так как показано здесь. Когда


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

Когда пользователи выбирают месяц, изображение года увеличивается и показывает


месяц. Текущий день остаётся выделенным, и год показан на кнопке возврата, так
что пользователи точно знают, где находятся, откуда перешли и как вернуться
обратно.
Похожий переход происходит, когда пользователи выбирают день: Отображение
месяца сворачивается, помещая текущую неделю вверх экрана и показывая часы
выбранного дня. При каждом переходе Календарь усиливает многоуровневую связь
между годами, месяцами и днями.

Структура iOS App

Практически все приложения iOS используют некоторые компоненты


пользовательского интерфейса в соответствии с платформой UIKit. Знание названий,
ролей и способностей этих основных компонентов поможет вам принимать решения
в создании пользовательского интерфейса вашего приложения.
Элементы пользовательского интерфейса UIKit подразделяются на 4 категории:

 Панели. Панели содержат контекстуальную информацию, которая сообщает


пользователям, где они находятся, и управляет для помощи пользователям
совершать действия.

 Обзор содержания. Обзор содержания включает в себя конкретное содержимое


приложения и делает возможными такие операции как, например, прокрутка,
вставка, удаление и перестановка иконок.

 Элементы управления. Элементы управления выполняют операции или


отображают информацию.

 Всплывающие окна. Всплывающие окна появляются для предоставления


пользователям важной информации или дополнительного выбора и
функциональности.

Вдобавок к определению элементов пользовательского интерфейса, UIKit определяет


задачи, которые обеспечивают функциональными возможностями, такими, как
распознавание жестов, рисование, доступность и поддержка печати.

Программно, элемент пользовательского интерфейса является типом видов, так как


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

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

Здесь приводится пример того, как виды и контроллеры видов могут объединяться
для представления пользовательского интерфейса в приложении iOS.

Хотя разработчики рассуждают с точки зрения видов и контроллеров видов,


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

ПРИМЕЧАНИЕ

Приложение iOS включает в себя окно. Но, отличное от окон в компьютерных


приложениях, окно iOS не имеет видимых частей и его нельзя передвинуть на другое
место дисплея. Большинство приложений iOS содержит всего одно окно, а
приложения, которые поддерживают внешний дисплей, могут иметь более одного
окна.

В iOS Human Interface Guidelines слово экран используется так, так понимается
большинством пользователей. Как разработчик, вы возможно также читали об
экранах в другом контексте, где термин относится к объектам UIScreen, которые вы
можете использовать для доступа к экрану внешнего дисплея.

Адаптивность и Расположение

Встраивание Адаптивности

Люди, как правило, хотят использовать их любимые приложения на всех устройствах


и в разных условиях, например при различной ориентации устройств и в режиме
разделённого экрана на iPad. Size classes и Авто-Расположение помогут вам
оправдать ожидания посредством определения того, как расположение
контроллеров видов, экранов, и видов должно быть адаптировано при изменении
режима дисплея. (Понятие режим дисплея может относиться ко всему экрану
устройства или только его части, например область вспомогательного экрана или
область одной стороны в разделённом экране на iPad.)

iOS включает в себя понятие режим дисплея в определении коллекция трейтов,


которое включает в себя size class, шкалу индикатора и идиому пользовательского
интерфейса. Вы можете использовать коллекции трейтов для того, чтобы сделать
ваши виды и контроллеры видов чувствительными к изменениям режима дисплея.
(Для более подробного изучения коллекции трейтов смотрите UITraitCollection Class
Reference.)

iOS определяет два size classes: обычные (regular) и компактные (compact). Обычные
(regular) size classes связаны с открытым пространством, а компактные (compact) с
ограниченным пространством. Чтобы охарактеризовать режим дисплея, вы
определяете горизонтальный и вертикальный size class. Как вы возможно
догадались, устройство iOS может использовать один набор size classes для
портретной ориентации и один набор для ландшафтной ориентации.

iOS автоматически производит ряд изменений расположения, когда изменяются size


classes режима дисплея. Например, когда вертикальный size class изменяется с
компактного (compact) на обычный (regular), навигационные панели и панели
инструментов автоматически становятся выше.
Когда вы полагаетесь на size classes, чтобы внести изменения в расположение, ваше
приложение будет выглядеть отлично в любом режиме дисплея. Чтобы узнать больше
о работе с size classes в конструкторе интерфейса, смотрите Size Classes Design Help.

ПРИМЕЧАНИЕ

В рамках size class продолжайте использовать авто-расположение для небольших


настроек макета, таких, как сжатие или растягивание содержимого. Чтобы узнать
больше об использовании авто-расположения, смотрите Auto Layout Guide.

Приведённые далее примеры могут помочь вам представить, как size classes
характеризуют режим дисплея на разных устройствах. Например, iPad (включая iPad
Pro) использует обычный size class в обоих размерах и обеих ориентациях. Другими
словами, режим дисплея iPad всегда горизонтально и вертикально систематичен.

Size classes iPad при портретной ориентации

Size classes iPad в ландшафтной ориентации


ПРИМЕЧАНИЕ

Со средствами многозадачности на подходящих моделях iPad ваше приложение


может разделять экран с другим приложением. Будьте уверены, что используете Auto
Layout таким образом, чтобы удовлетворить пользователя, когда он решит
использовать многофункциональные особенности, такие, как Split View (разделённый
экран) и Slide Over.

Вдобавок к использованию Auto Layout, важно полагаться на особенности UIView


readableContentGuide, когда вы располагаете читаемое содержимое на iPad Pro,
чтобы поля не мешали читателям.

Режим дисплея может изменяться в зависимости от устройства и его ориентации.

При портретной ориентации iPhone 6 Plus использует компактный (compact)


горизонтальный и обычный (regular) вертикальный size classes.

При ландшафтной ориентации iPhone 6 Plus использует обычный (regular)


горизонтальный и компактный (compact) вертикальный size classes.

Все остальные модели iPhone, включая iPhone 6, используют одинаковые системы size
classes.
При портретной ориентации iPhone 6, iPhone 5, и iPhone 4s используют компактный
(compact) горизонтальный и регулярный (regular) вертикальный size classes.

При ландшафтной ориентации эти устройства используют компактный (compact) size


class и в горизонтальном размере, и в вертикальном.

Предоставьте прекрасный опыт в любых условиях

Когда вы воспользуетесь преимуществами адаптивности, будьте уверены, что ваш


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

Фокусируйтесь на основном содержимом во всех условиях. Это ваша основная задача.


Люди используют ваше приложения для того, чтобы видеть то содержимое, которое
им нужно, и взаимодействовать с ним. Изменение фокуса при изменении условий
может сбить людей с толку, и это может создать впечатление, что они не могут
справиться с приложением.

Избегайте неуместных изменений в расположении. Сопоставимый опыт в разных


условиях позволяет людям сохранить использование шаблонов при развороте
устройства или запуске вашего приложения на другом устройстве. Например, если вы
используете сетку для демонстрации изображений в горизонтальном обычном
(regular) режиме, вам не нужно отображать такую же информацию в горизонтальном
компактном (compact) режиме, даже если вы отрегулировали размеры сетки.
Идите вперёд, если ваше приложение работает только в одной ориентации. Люди
ожидают, что смогут использовать ваше приложение в разных ориентациях, и лучше
всего воплотить эти ожидания. Но если необходимо, чтобы ваше приложение
работало только в одной ориентации, вам следует:

 Избегайте отображения элементов пользовательского интерфейса, которые


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

 Обеспечьте оба варианта ориентации. Например, если приложение работает


только в ландшафтной ориентации, люди должны быть способны
воспользоваться им, неважно, находится Home button справа или слева. И если
люди разворачивают устройство на 180 градусов во время использования
приложения, лучше всего, если приложение реагирует тем, что разворачивает
содержимое также на 180 градусов.

Если ваше приложение интерпретирует изменения в ориентации устройства как


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

Используйте расположение, чтобы обеспечить взаимодействие

Расположение — это нечто большее, чем просто то, как должны выглядеть элементы
пользовательского интерфейса на экране. Расположением вы показываете
пользователям, что является наиболее важным, какой у них выбор и как всё
взаимосвязано.

Сделайте так, чтобы было легко сфокусироваться на основной задаче посредством


выделения важного содержимого или функциональных возможностей. Некоторыми
хорошими способами сделать это являются размещение важных элементов в верхней
части экрана и — слева направо — возле левой части экрана:
Используйте визуальное преимущество и баланс, чтобы показать пользователям
относительную значимость элементов на экране. Крупные элементы бросаются в
глаза и, как правило, кажутся более важными, чем мелкие. Для пользователей также
легче нажимать на более крупные элементы, что делает их особенно полезными в
приложениях, таких, как Phone и Clock, к которым люди прибегают в обстановке,
сбивающей с толку.

Используйте выравнивание, чтобы облегчить считывание информации и создавайте


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

Удостоверьтесь, что пользователи способны понять основное содержимое в его


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

Будьте готовы к изменениям размера текста. Пользователи ожидают, что когда они
выбирают другой размер текста в Настройках, большинство приложений будет
отвечать надлежащим образом. Для некоторых изменений в размере текста, вам,
возможно, понадобится скорректировать расположение; для получения большей
информации об отображении текста вашего приложения, смотрите раздел Текст
Всегда Должен Быть Разборчивым.

Насколько возможно, избегайте противоречивого оформления пользовательского


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

Упростите взаимодействие пользователей с содержимым и элементами управления


посредством обеспечения достаточного пространства для каждого интерактивного
элемента. Сделайте элементы, на которые можно нажать, размером около 44 x 44
точек.

Рекомендуется
Не рекомендуется

Запуск и Завершение

Быстрый Запуск

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

ВАЖНО

Не заставляйте пользователей перезагружать или перезапускать устройства после


того, как они установили приложение. Перезагрузка занимает много времени, и ваше
приложение может выглядеть ненадёжным и сложным в использовании.

Если в вашем приложение есть использование памяти или другие моменты, которые
осложняют запуск пока не произойдёт начальная загрузка, вам необходимо принять
меры по устранению этих неудобств. Для руководства по разработке приложения,
которое хорошо функционирует, смотрите пункт Use Memory Efficiently.

Насколько возможно, избегайте отображения экрана-заставки или другого опыта при


запуске. Самое лучшее, когда пользователи могут приступить к использованию
вашего приложения немедленно.

Рекомендуется

Не рекомендуется
Старайтесь избегать запроса о выполнении данных установки. Вместо этого:

 Сфокусируйтесь на том, что нужно 80 процентам ваших пользователей. Когда


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

 Получайте как можно больше информации из других источников.Если вы


можете использовать какую-либо информацию, которую люди предоставляют
во встроенных приложениях или в настройках устройства, запросите эти
данные у системы; не просите людей вводить их снова.

 Если вы должны запросить информацию об установке, сделайте так, чтобы


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

Откладывайте запрос логина как можно дольше. Лучше всего, когда пользователи
могут пользоваться большей частью вашего приложения и функциональными
возможностями без входа в систему. Например, App Store не запрашивает
авторизации пользователей до тех пор, пока они не решат что-нибудь купить. Часто
пользователи прекращают пользоваться приложениями, которые требуют
регистрации до того, как они смогут получить что-то полезное.

Если регистрация пользователей необходима, в области авторизации отобразите


краткое доброжелательное объяснение причин и преимуществ, которые получат
пользователи, выполнив такое требование.

Хорошо подумайте, прежде чем предоставить ознакомительную информацию.


(Ознакомление представляет характеристики приложения и объясняет, как выполнять
основные задачи.) Перед тем как принять во внимание ознакомление, приложите все
усилия для того, чтобы со всеми характеристиками и задачами вашего приложения
было легко разобраться. Ознакомление не является заменой хорошего оформления
приложения. Если вы всё еще считаете, что ознакомление необходимо, следуйте этим
пунктам для создания краткой, направленной методики освоения, которая не станет
препятствием для пользователей.

 Знакомьте пользователей только с той информацией, которая им нужна для


начала использования. Качественная методика освоения показывает
пользователям, что нужно сделать сначала, или кратко демонстрирует
некоторые характеристики, в которых заинтересовано большинство
пользователей. Если вы предоставите пользователям слишком много
информации перед тем, как им выпадет шанс исследовать ваше приложение,
вы возлагаете на них ответственность за запоминание деталей, которые не
понадобятся сразу же, и вы также можете создать впечатление, что приложение
является сложным в использовании. Если для отдельных задач требуется
дополнительная помощь, предоставьте эту помощь только когда пользователь
приступает к ним.

 Используйте анимацию и интерактивный режим, чтобы привлечь пользователей


и помочь им обучаться посредством действий. Добавляйте текст не много и
только в том случае, если он обогащает пользовательский опыт; не ждите, что
пользователи будут читать длинные отрывки. Например, не описывайте, как
выполнить простую задачу, если можно использовать анимацию, чтобы
показать пользователям, что нужно делать. Чтобы провести пользователей
через более сложную задачу, можно добавить краткие наложенные
изображения, которые описывают каждый шаг, как только пользователь
собирался его сделать. Насколько возможно, избегайте отображения
скриншотов вашего приложения, потому что они не интерактивны, и
пользователи могут спутать их с пользовательским интерфейсом.

 Сделайте так, чтобы пропустить ознакомительный опыт было просто. После


того, как пользователи видели ознакомление, они, возможно, больше не
захотят видеть его снова; а некоторые пользователи и вовсе не хотят его
видеть. Удостоверьтесь, что запомнили то, что выбрали пользователи, и не
заставляйте их выбирать каждый раз, когда они запускают приложение.

Избегайте слишком скорого запроса об оценке вашего приложения. Слишком


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

Как правило, запуск должен происходить в текущей ориентации устройства. Однако,


если ваше приложение работает только в одной ориентации, запускайте приложение
только в этой ориентации и позвольте пользователям разворачивать устройство, если
необходимо. Например, если игра или приложение, отображающее медиа-
содержимое, запускается только в ландшафтной ориентации, возможно запускать его
в данной ориентации, даже если устройство в текущий момент находится в
портретной ориентации. Таким образом, если люди запускают приложение, когда
устройство находится в портретной ориентации, они знают, что надо развернуть
устройство в ландшафтную ориентацию, чтобы увидеть содержимое.
ПРИМЕЧАНИЕ

Лучше всего, когда приложения ландшафтной ориентации поддерживают оба


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

Предоставьте файл запуска. iOS показывает изображение в момент запуска вашего


приложения, это создаёт впечатление быстроты и даёт вашему приложению
достаточно времени, чтобы загрузить содержимое. Как научиться создавать файл
запуска смотрите раздел Файлы Запуска.

Если возможно, избегайте требования, чтобы пользователи читали заявление об


отказе или принятие пользовательского соглашения до того, как они смогут сделать
что-либо еще. Вместо этого, вы можете позволить App Store отображать заявление об
отказе или принятие пользовательского соглашения таким образом, чтобы люди
могли получить доступ к ним до того, как начнут использовать приложение. Если
необходимо поместить эти элементы в ваше приложение, удостоверьтесь, что они
подходят к пользовательскому интерфейсу и уравновешивают бизнесс-требования с
необходимостью использования.

Если ваше приложение перезагрузилось, восстановите его состояние, чтобы


пользователи могли продолжить там, где они остановились. Люди не должны
запоминать шаги, которые они проделали до предыдущего места в вашем
приложении.. Для получения большей информации об эффективных способах
сохранения и восстановления состояния приложения, смотрите раздел Preserving
Your App’s Visual Appearance Across Launches.

Всегда Будьте Готовы к Завершению

Приложение в iOS никогда не отображает окно Закрытия или Выхода. Люди


прекращают использование приложения, когда они переключаются на другое,
возвращаются на Главный Экран или используют режим сна.

Когда люди выходят из приложения, многозадачность iOS перемещает его на задний


план и замещает его пользовательский интерфейс интерфейсом другого
приложения. Чтобы быть готовым для такой ситуации, ваше приложение должно:

 Сохранять пользовательские данные так быстро, как это возможно, и настолько


часто, насколько необходимо. Обеспечьте это, потому что приложение на
заднем плане может быть закрыто или завершено в любой момент.

 Сохранять текущее состояние во время остановки на самом лучшем уровне


детализации, который возможен. Таким образом, люди не теряют контекста,
когда возвращаются к вашему приложению. Например, если ваше приложение
отображает прокрутку данных, сохраните текущее положение прокрутки. Вы
можете получить больше полезной информации об эффективных способах
сохранения и восстановления состояния вашего приложения в разделе
Preserving Your App’s Visual Appearance Across Launches.

Для некоторых приложений необходимо продолжать работать на заднем фоне, пока


пользователь использует другое приложение. Например, пользователи могут
захотеть послушать песню, которая играет в одном приложении, в то время, как они
используют другое приложение для проверки списка текущих дел или играют в игру.
Узнать, как правильно и изящно управлять многозадачностью, можно в разделе
Многозадачность.
Никогда не допускайте программного завершения iOS приложения. Люди, как
правило, воспринимают это как неисправность. Если что-то мешает работе вашего
приложения надлежащим образом, вам нужно сообщить пользователям об этой
ситуации и объяснить, что им нужно сделать. Существует два грамотных способа это
сделать:

Если все функции приложения недоступны, отобразите сообщение, которое


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

Если только некоторые функции недоступны, также отобразите сообщение или


предупреждение, если пользователи пытаются воспользоваться этими функциями.
Иным образом, люди должны быть способны использовать остальную часть
приложения. Если вы решили использовать предупреждение, удостоверьтесь, что
отображаете его только когда люди пытаются получить доступ к функции, которая не
работает.
Навигация

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

В широком смысле, существует три основных стиля навигации, каждый из которых


подходит для отдельной структуры приложения:

 Многоуровневый

 Плоский

 С учётом содержания или использования

В многоуровневом приложении пользователи двигаются посредством принятия


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

В приложениях с плоской информационной структурой пользователи двигаются


напрямую от одной главной категории к другой, потому что все главные категории
доступны на главном экране. Музыка и App Store являются хорошим примером
приложений с плоской структурой.
Ни для кого не сюрприз, что в приложениях с информационной структурой с учётом
содержания или опыта навигация разделена в соответствии с содержанием и
использованием. Например, пользователь перемещается по книге посредством
движения от одной страницы к другой, либо посредством выбора страницы в
содержании; в игре навигация часто является важной частью использования.

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


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

Пользователи всегда должны знать, где именно в вашем приложении они находятся
и как достичь следующей цели. Вопреки стилю навигации, который подходит
структуре вашего приложения, самая важная вещь — это обеспечить логичное,
предсказуемое и простое передвижение пользователя через содержимое.

UIKit определяет некоторые стандартные элементы пользовательского интерфейса,


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

Используйте панели навигации, чтобы предоставить пользователям простой способ


преодоления многоуровневости данных. Заголовок панели навигации может
показать пользователям их текущее положение; кнопка "назад" облегчает
возвращение к предыдущему уровню. Для большей информации смотрите раздел
Панель Навигации.

Используйте панель вкладок для отображения нескольких аналогичных категорий


содержания или функциональности. Панель вкладок является хорошим способом
поддерживать плоскую информационную структуру и её неизменность позволяет
людям переключаться между категориями независимо от их текущего положения.
Для большей информации смотрите раздел Панель Вкладок.

Используйте управление страницами, когда каждый экран приложения представляет


отдельный пример элемента или страницы одинакового типа. Управление
страницами удобно для того, чтобы показать пользователям, сколько элементов или
страниц доступны и что из них отображается на данный момент. Например,
приложение Погода использует управление страницами, чтобы показать, сколько
страниц с информацией о погоде местностей открыл пользователь. Для получения
большей информации об управлении страницами смотрите раздел Управление
Страницами.

Как правило, самое лучшее — это предоставить пользователю один путь к каждому
экрану. Если существует один экран, который нужно видеть пользователям более чем
в одном контексте, примите во внимание всплывающие окна, такие, как модальные
окна, листы действий или предупреждения. Для получения большей информации
смотрите разделы Модальное Окно, Листы Действий и Предупреждения.

UIKit также предоставляет упомянутые ниже похожие элементы управления:

 Сегментированный Элемент Управления. Сегментированный элемент


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

 Панель Инструментов. Хотя панель инструментов похожа на навигационную


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

Модальное Окружение

Модальность — это режим, имеющий преимущества и недостатки, в котором что-


либо существует или происходит. Он даёт пользователям способ совершить задачу
или получить информацию без отвлечений, но, таким образом, временно
предотвращает взаимодействие пользователя с остальной частью приложения.
В идеале, если люди смогут непрямолинейно взаимодействовать с приложениями
iOS, так что лучше всего, если вы можете свести к минимуму работу в модальном
режиме вашего приложения. В общем, рассмотрите создание модального окружения
только если:

 Особо важно заполучить внимание пользователя

 Необходимо, чтобы автономная задача была выполнена или однозначно


прекращена, чтобы избежать потери данных пользователя при неоднозначном
состоянии приложения

Обеспечьте простоту, сжатость и узко направленность модальных задач. Вы не


хотите, чтобы ваши пользователи воспринимали модальное окно как мини-
приложение внутри вашего приложения. Если подзадача является слишком сложной,
люди могут потерять из виду основную задачу, которую они приостановили, когда
начался процесс модальности. Относитесь особенно настороженно к созданию
модальных задач, которые включают в себя иерархию видов, потому что люди могут
потеряться и забыть, как восстановить прошлые этапы. Если модальная задача
должна содержать подзадачи в отдельных видах, удостоверьтесь, что
предоставляете пользователям единственный понятный путь через иерархию и
избегайте зацикливания. Для руководства по использованию модальных окон
смотрите раздел Модальное Окно.
Всегда обеспечивайте очевидный и безопасный способ для выхода из модальной
задачи. Люди всегда должны быть способны предсказать дальнейшую работу, если
они отклоняют модальное окно.

Если задача требует создания иерархии модальных окон, удостоверьтесь, что


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

Используйте предупреждения для передачи существенной, а, в идеале, требующей


принятия мер, информации. Предупреждение прерывает использование и требует
нажатия для отклонения, так что для пользователей важно чувствовать, что
предупреждение оправдывает вмешательство. Для получения большей информации
смотрите раздел Предупреждение.

Уважайте предпочтения пользователей на получения уведомлений. В Настройках


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

Интерактивность и Обратная Связь

Интерактивные Элементы Побуждают к Прикосновению

Для обозначения интерактивности встроенные приложения используют ряд


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

На устройствах, которые поддерживают 3D Touch, задний фон затуманивается, чтобы


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

Кнопка "назад" использует несколько индикаторов для обозначения интерактивности


и выражения ее функции: Она появляется в качестве реакции на навигацию,
отображает обратный указатель, обычно используется основной цвет, и может
отображать название предыдущего экрана.
Иконка или заголовок, которые предусматривают чёткий призыв к действию,
побуждают пользователей нажать на них. Например, заголовки в Картах, такие, как
"Маршруты" или "Виртуальная Экскурсия", ясно описывают действия, которые
пользователи могут совершить. Соединённые с основными цветами, заголовки,
подразумевающие действия, как правило, делают границы кнопок или другие
элементы дизайна излишними.

Добавляйте границы кнопок или фон в область содержимого, только если это
необходимо. Кнопкам на панелях, окнах действия или предупреждениях не нужны
границы, потому что пользователи знают, что большинство элементов в этой области
являются интерактивными. С другой стороны, кнопке в области содержимого нужны
границы или фон, чтобы отличить их от остального содержимого. Например, в
Музыке, Часах, Фотографиях и App Store используются такие кнопки в некоторых
особенных обстоятельствах.

В Фотографиях используются границы кнопок для отличия кнопки Start Sharing от


пояснительного текста, который появляется над ней.

В Часах используется фон кнопок в экранах Секундомера и Таймера для привлечения


внимания к кнопкам Старт и Пауза и для того, чтобы было просто на них нажать,
когда пользователя что-то отвлекает.
В App Store используются границы кнопок в строке таблицы для выделения различия
между нажатием строки для получения большей информации и нажатием кнопки для
приобретения (или установки) покупки.

Пользователи Знают Стандартные Жесты

Люди используют жесты — такие, как касание, медленное движение и сжатие —


чтобы взаимодействовать с приложениями и устройствами iOS. Использование жестов
создаёт близкую связь между людьми и их устройствами и усиливает ощущение
непосредственного управления объектами на экране. Люди, как правило, ожидают
того, чтобы жесты работали во всех приложениях, которые они используют.

Людям не нужно запоминать новые жесты для взаимодействия с 3D Touch. Люди


быстро обнаруживают дополнительный интерактивный аспект, который создаёт 3D
Touch, когда они слегка нажимают на экран и элементы реагируют.

Касание Для нажатия или выбора элемента управления.

Медленное движение Для прокрутки или плавного смещения — это движение из


стороны в сторону.

Перетаскивание элемента.

Пролистывание Для быстрой прокрутки или смещения.

Смахивание При помощи одного пальца для возврата к предыдущему экрану, для
возобновления скрытого вида в контроллере разделённого экрана или кнопки Delete
в строке экранной таблицы. Вкратце, смахивание вверх может возобновить
некоторые быстрые действия (для получения большей информации смотрите раздел
3D Touch).

При помощи четырёх пальцев для переключения между приложениями на iPad.

Двойное касание Для увеличения и центрирования блока содержимого или


изображения.

Для уменьшения (если элемент уже увеличен).

Сжатие Применение сжатия для увеличения; отсутствие сжатия для уменьшения.

Дотрагивание и удержание В редактируемом или выбранном тексте для отображения


увеличенного изображения для установки курсора.

Встряхивание для отмены или повтора действий.

В дополнение к стандартным жестам, которые знакомы пользователям, iOS выделяет


некоторые жесты, которые осуществляют системные действия, такие, как
отображение Центра Управления или Центра Уведомлений. Пользователи полагаются
на эти жесты для работы независимо от приложения, которое они используют.

Избегайте сопоставления различных жестов со стандартными. Если только ваше


приложение не является игрой, изменение значения стандартных жестов может
ввести людей в заблуждение и осложнить использование вашего приложения.

Избегайте создания специальных жестов, которые способствуют осуществлению


таких же действий, как и стандартные жесты. Люди привыкли к назначению
стандартных жестов и они не оценят того, что им придётся запоминать новые
способы для совершения тех же вещей.

Используйте сложные жесты как метод, требующий наименьших затрат времени и


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

В общем, избегайте определения новых жестов, если только ваше приложение не


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

В привычной обстановке примите во внимание многозахватные жесты. Хотя сложные


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

Упрощение Обратной Связи

Обратная связь помогает пользователям узнать, какова задача приложения,


обнаружить, что они могут сделать дальше и понять результаты своих действий.
Элементы управления и виды UIKit осуществляют разные виды обратной связи.

Насколько возможно, включите статус и другую важную информацию обратной связи


в пользовательский интерфейс. Лучше всего, если пользователи могут получить такую
информацию без совершения действия или отвлечения от содержимого. Например,
Почта отображает текущее состояние ящика на панели инструментов, где не
соперничает с материалами пользователя.

Избегайте ненужных предупреждений. Предупреждение является мощным


механизмом обратной связи, но он должен использоваться только для передачи
важной, а, в идеале, требующей принятия мер, информации. Если пользователи
видят много предупреждений, которые не содержат существенной информации, у
них выработается привычка игнорировать предупреждения. Для получения большей
информации об использовании предупреждений, смотрите раздел Предупреждения.

Процесс Ввода Информации Должен Быть Лёгким

Ввод информации занимает время и внимание, нажимают ли люди на элементы


управления или используют клавиатуру. Когда приложение заставляет людей
остановиться посредством запроса большого количества ввода данных еще до того,
как произойдёт что-то полезное, у людей может пропасть желание использовать это
приложение.
Упростите для пользователей процесс выбора. Например, вы можете использовать
указатель или экранную таблицу вместо текстового поля, потому что для
большинства пользователей выбрать элемент из списка проще, чем печатать слова.

Выбор даты в Напоминаниях

Список опций в Настройках

Получайте информацию от iOS, когда это уместно. Люди хранят большое количество
информации в своих устройствах. Когда есть смысл, не заставляйте людей
предоставлять вам информацию, которую вы можете сами легко найти, например
контакты или информацию в календаре.
Уравновешивайте запрос ввода данных пользователей тем, что даёте им что-то
взамен. Ощущение компромисса помогает людям чувствовать, что они обогащаются
по мере использования вашего приложения.

Анимация

Красивая изысканная анимация пронизывает пользовательский интерфейс iOS и


делает использование приложения более притягательным и динамичным.
Надлежащая анимация может:

 Передавать статус и обеспечивать обратную связь

 Усиливать ощущение непосредственного управления

 Помогать людям мысленно увидеть результат своих действий

Добавляйте анимацию осторожно, особенно в приложения, которые не обеспечивают


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

Так, используйте эффекты движения и динамическое состояние UIKit


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

Когда уместно, делайте специальную анимацию совместимой со встроенной


анимацией. Люди привыкли к искусной анимации во встроенных приложениях iOS.
На самом деле, люди, как правило, высоко ценят мягкие переходы между видами,
плавное реагирование на изменения ориентации устройства и кинетическую
прокрутку как неотъемлемую часть использования iOS. Если вы не создаёте
приложение, которое делает возможным эффект погружения, например, игру,
специальная анимация должна быть сопоставима со встроенной анимацией.

Используйте анимацию единообразно во всём приложении. Как и с другими типами


адаптирования к специфическим потребностям, важно использовать специальную
анимацию согласованно, так, чтобы пользователи могли полагаться на опыт, который
они получили во время использования вашего приложения.
В общем, стремитесь к реализму и убедительности при создании специальной
анимации. Люди, как правило, склонны к принятию свободы творчества в
оформлении, но они могут быть в замешательстве, если они увидят движение,
которое не имеет смысла или противостоит законам физики. Например, если вы
открываете вид скользящим движение сверху вниз, вы должны закрыть его обратным
движением вверх, потому что, таким образом, это помогает пользователям
запомнить, откуда вид появился. Если вы закрываете такой же вид движением вниз за
пределы нижней границы экрана, вы ломаете мысленную модель пользователя
касательно вида, расположенного над верхней частью экрана.

Создание Бренда

Успешное создание бренда включает в себя нечто большее, чем просто добавление
цифрового объекта бренда в приложение. Лучшие приложения совмещают в себе
существующие цифровые объекты с уникальным внешним оформлением и наделяют
пользователей восхитительным и запоминающимся опытом.

iOS облегчает использование специальных иконок, цветов и шрифтов для создания


выделяющегося пользовательского интерфейса, которое отличает ваше приложение
от остальных. Во время создания этих элементов соблюдайте две вещи:

 Каждый специальный элемент должен сам по себе выглядеть хорошо и


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

 Чтобы приложение не выделялось в iOS, оно не должно выглядеть как


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

Когда вам понадобится напомнить пользователям о существующем бренде внутри


вашего приложения, следуйте инструкциям.

Совмещайте цифровые объекты бренда доведённым до совершенства ненавязчивым


образом. Люди используют ваше приложение для совершения действий или
развлечения; они не хотят чувствовать, будто их заставляют смотреть рекламу. Для
самого лучшего пользовательского опыта вы ненавязчиво напоминаете
пользователям об индивидуальности бренда посредством выбора шрифта, цвета и
изображений.

Рекомендуется

Не рекомендуется

Не забирайте пространство у содержимого, которое нужно пользователям.


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

Не поддавайтесь искушению повсеместно отображать ваш логотип в приложении.


Экраны мобильных устройств относительно маленького размера, так что каждое
появление логотипа отбирает пространство у содержимого, которое люди хотят
видеть. Более того, отображение логотипа в приложении не выполняет той функции,
которую выполняет отображение логотипа на веб-странице: Для пользователей
привычно заходить на веб-страницу, не зная о правообладателе, но гораздо менее
вероятно, что пользователи откроют приложение, пока не увидят его иконку.

Цвет и Оформление

Цвет Усиливает Связь

В iOS цвет выражает интерактивность, придаёт значимость и обеспечивает


визуальную целостность. Встроенные приложения используют группу чистых и ясных
цветов, которые прекрасно смотрятся по отдельности и в сочетании друг с другом, а
также и на светлом, и на тёмном фоне.

Если вы создаёте сложные произвольные цвета, удостоверьтесь, что они будут


хорошо смотреться вместе. Например, если вашему приложению подходят
пастельные цвета, вам нужно создать группу соответствующих пастельных цветов,
которые можно повсеместно использовать в приложении.

Обращайте внимание на цветовой контраст в различном контексте. Например, если


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

Хотя наблюдение за вашим устройством в приложении может помочь определить,


над какими местами нужно поработать, этим нельзя заменить более объективный
подход, который приносит надёжные результаты. Этот подход включает в себя
определение соотношения между степенью освещённости цветов переднего и
заднего планов. Получив это соотношение, используйте онлайн-калькулятор степени
контрастности или вы можете выполнить подсчёт самостоятельно, используя
формулу, указанную в Руководстве по обеспечению доступности web-контента
(WCAG) 2.0. В идеале соотношение цветового контраста в вашем приложении должно
быть 4.5:1 или выше.

Примите во внимание полупрозрачность панели и содержимого приложения, когда


используете специальный оттенок панели. Если вам нужно создать оттенок панели,
которому соответствует конкретный цвет, например цвет в существующем бренде,
вам возможно придётся эксперементировать с разными цветами, пока вы не будете
удовлетворены результатом. Внешний вид панели зависит от полупозрачности,
которую обеспечивает iOS, и внешнего вида содержимого приложения, которое
может быть расположено за панелью.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Для определения оттенка кнопок панели используйте особенности tintColor; для


определения оттенка самой панели используйте особенности barTintColor. Для
получения большей информации об этих особенностях панели, смотрите разделы
UINavigationBar Class Reference, UITabBar Class Reference, UIToolbar Class Reference и
UISearchBar Class Reference.

Примите к сведению неспособность различать цвета. Большинство людей,


неспособных отличать цвета, испытывают сложности в отличии красного от зелёного.
Проверьте ваше приложение, чтобы удостовериться, что вы не используете красный и
зелёный как единственный способ различать два состояния или сочетания (некоторые
программные обеспечения для редактирования изображений могут помочь вам в
работе с неспособностью различать цвета). В целом, использование более одного
способа для выражения интерактивности элемента является хорошей идеей (для
получения большей информации о выражении интерактивности в iOS смотрите
раздел Интерактивные Элементы Побуждают к Прикосновению).
Примите во внимание выбор основного цвета для выражения интерактивности и
состояния. Основными цветами во встроенных приложениях являются жёлтый в
Заметках и красный в Календаре. Если вы выделите основной цвет для выражения
интерактивности и состояния, удостоверьтесь, что другие цвета в вашем приложении
не конкурируют с ним.

Избегайте использования одинаковых цветов и в интерактивных, и не интерактивных


элементах. Цвет — это один из способов, которым выражается интерактивность
элементов пользовательского интерфейса. Если и интерактивные и не интерактивные
элементы одного цвета, пользователям сложнее разобраться, куда нажимать.

Цвет передаёт информацию, но не всегда так, как вы задумали. Каждый видит цвет
по-своему, и многие культуры отличаются тем, каким значением они наделяют цвета.
Потратьте время на то, чтобы узнать, как ваше использование цвета может быть
воспринято разными странами и культурами. Насколько возможно, удостоверьтесь,
что цвета в вашем приложении посылают верное сообщение.

В большинстве случаев не позволяйте цвету отвлечь пользователей. Если цвет не


является составляющей цели вашего приложения, лучше использовать цвет как
изящное украшение.

Качественное Оформление Создаёт Чёткую Коммуникацию

Apple создала группу шрифтов San Francisco для обеспечения красивого оформления
речевого и читательского процессов на всех платформах. В iOS 9 и далее San
Francisco является системным шрифтом.

San Francisco работает вместе с динамическим типом (Dynamic Type), чтобы


предоставить вам:

 Целый ряд размеров шрифта, которые автоматически обеспечивают


превосходную разборчивость и удобный процесс чтения при любых
пользовательских настройках, включая настройки доступа

 Автоматическую регулировку расстояния между знаками (интервалы) и высоты


строк (междустрочный интервал) при любом размере шрифта

 Способность определять различные текстовые стили для семантически


отличающихся блоков текстов, таких, как Тело, Дополнительная информация
или Заголовок
 Текст, который подстраивается правильным образом под изменения, которые
пользователь вносит в настройки размера текста (включая видимость размеров
текстов)

Загрузите San Francisco посетив https://developer.apple.com/fonts/. (Имейте ввиду,


что шрифт San Francisco для iOS 9 называется SF-UI.) Когда вы применяете шрифт San
Francisco к вашему приложению, вы можете регулировать значения в Simulator >
Settings, чтобы проверить как текст вашего приложения выглядит в разных размерах.

ПРИМЕЧАНИЕ

Если вы используете специальный шрифт, вы всё еще можете применить


динамический тип (Dynamic Type) и определения типа в соответствии с системными
настройками размера текста. На вашем приложении лежит ответственность за
надлежащую работу в случае изменений настроек пользователем. Чтобы получить
больше информации о текстовых стилях и удостовериться, что ваше приложение
уведомлено об изменениях размера текста пользователем, смотрите раздел
Текстовые Стили.

San Francisco бывает двух оптических размеров: Text и Display. Text используется для
размеров, которые ниже 20 пунктов, а Display для размеров 20 и более пунктов.
Когда вы применяете в своём приложении San Francisco, iOS автоматически
переключается между Text и Display, когда в этом есть необходимость.

ПРИМЕЧАНИЕ

Если для создания оформления вы используете такие программы, как Sketch или
Photoshop, вам необходимо установить тип Display, когда вы устанавливаете размер
текстового шрифта 20 пунктов или более. iOS автоматически устанавливает интервал
между симоволами для San Francisco, основанный на размере текста (междустрочный
интервал используется для изменения начального расстояния между буквами при
определённом размере в пунктах). Интервалы между символами для каждого кегля
шрифта в Text и Display показаны в Таблице 10-1 и Таблице 10-2 соответственно.

Размер шрифта в пунктах @2x (144 PPI) Интервал

6 41

8 26
Размер шрифта в пунктах @2x (144 PPI) Интервал

9 19

10 12

11 6

12 0

13 -6

14 -11

15 -16

16 -20

17 -24

18 -25

Таблица 10-1 Интервал на размер шрифта в пунктах в SF-UI Text

Размер шрифта в пунктах @2x (144 PPI) Интервал

20 19

22 16

28 13

32 12

36 11

50 7
Размер шрифта в пунктах @2x (144 PPI) Интервал

64 3

80 и выше 0

Таблица 10-2 Интервал на размер шрифта в пунктах в SF-UI Display

Для выделения текста или создания визуальной взаимосвязи между частями


содержимого, вы можете полагаться на стили, выделенные семантически
посредством динамического типа (Dynamic Type), например, заголовок и основная
часть, или вы можете устанавливать насыщенность шрифта, например, полужирный
или сверхсветлый. Применение динамического типа (Dynamic Type) упрощает
передачу смысла содержания, но если вы хотите получить больше контроля над
оформлением, вы можете установить определённую насыщенность шрифта для
конкретной части текста. (Для получения большей информации о настройке
насыщенности шрифта смотрите раздел UIFont Class Reference.)

Например, вы, возможно, захотите увеличить насыщенность какого-либо текста,


чтобы помочь пользователям увидеть иерархию содержимого, либо привлечь их
внимание к конкретному слову или фразе. Либо вы, возможно, захотите создать
визуальную связность между множеством близко расположенных ярлыков разного
размера посредством увеличения насыщенности мелкого шрифта и уменьшением
насыщенности крупного. Насыщенность шрифта также оказывает влияние на стиль и
выражение содержимого в целом, так что вы можете выбрать определённую степень
насыщенности для достижения конкретной цели в оформлении.

Уделяйте первостепенное внимание содержимому, когда отвечаете на изменения в


размере шрифта. Не всё содержимое одинаково важно для пользователей. Когда
пользователи выбирают более крупный размер текста, они хотят, чтобы содержимое,
которое им нужно, было проще читать; они не всегда хотят, чтобы каждое слово на
экране было крупнее.

Например, когда пользователи выбирают крупный размер текста для прочтения,


Почта отображает тему и основную часть сообщения более крупно, а менее важную
информацию, такую как дата и получатель, мелко.
Удостоверьтесь, что все стили созданного шрифта разборчивы во всех размерах.
Один из способов это сделать — следовать тому, как iOS отображает стили шрифта в
различных размерах. Например:

 Размер текста никогда не должен быть менее 11 пунктов, даже если


пользователь выбирает очень маленький размер. Для сравнения, размер текста
основной части в большом формате равен 17 кегелям, что является
стандартной настройкой размера текста.

 В целом, разница между размером шрифта и значением межстрочного


интервала равна одному пункту в соответствии с настройкой размера текста.
Исключениями являются два стиля надписей, которые используют одинаковые
размеры шрифта, межстрочный интервал и расстояние между знаками в очень
мелком, мелком и среднем размерах.

 В трёх самых маленьких размерах текста расстояние между знаками довольно


большое; в трёх самых крупных размерах текста оно относительно близкое.

 В заголовке и основной части текста используется одинаковый размер шрифта.


Для отличия от основной части, в заголовке используется повышенная степень
насыщенности.

 Размер текста навигационной панели всегда равен 17 пунктам, что является


равным тексту основной части при выборе крупного размера в настройках.
 Насыщенность текста всегда либо нормальная, либо полужирная; обычно не
используется сверхсветлая или жирная насыщенность, потому что такой текст
сложно прочитать.

По общему правилу, используйте один шрифт во всём приложении. Соединение


нескольких разных шрифтов может сделать ваше приложение разбитым на куски и
небрежным. Вместо этого используйте один шрифт и несколько стилей и размеров.

Рекомендуется

Не рекомендуется
Иконки и Графика

Иконка Приложения

Каждому приложению необходима красивая иконка. Нет ничего необычного в том,


что начальное мнение людей относительно качества, цели и надёжности вашего
приложения основано исключительно на том, как выглядит иконка.

Когда вы размышляете об иконке для вашего приложения, старайтесь соблюдать


следующие пункты. Если вы готовы к созданию иконки, ознакомьтесь с разделом
Иконка Приложения для подробного руководства и деталей.

 Иконка приложения — это важная часть создания бренда вашего приложения.


Подойдите к дизайну как к возможности рассказать историю вашего
приложения и создать эмоциональную связь с пользователями.

 Лучшие иконки приложений уникальны, лаконичны, привлекательны и


незабываемы.
 Иконка приложения должна выглядеть хорошо в любых размерах и на любом
фоне. Детали, которые обогащают иконку крупного размера, могут сделать её
размытой в мелком размере.

Маленькие Иконки

iOS предоставляет много маленьких иконок, обозначающих стандартные задачи и


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

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

Примите к сведению, что для обозначения элементов навигационной панели или


панели инструментов вместо иконок вы можете использовать текст. Например, в
Календаре вместо иконок используются слова "Сегодня", "Календари" и "Входящие".

Чтобы решить, использовать ли текст или иконки в навигационной панели или


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

Графика

Приложения iOS, как правило, обогащены графикой. Отображаете вы фотографии


пользователя или создаёте специальную иллюстрацию, вам нужно следовать
нижеуказанным пунктам.

Поддержка Retina дисплея. Удостоверьтесь, что вы поддерживаете высокое


разрешение всех иллюстраций и изображений в вашем приложении. В частности,
поддерживайте свойства @3x для iPhone 6 Plus и @2x для остальных устройств с
высоким разрешением.

Отображайте фотографии и изображения в оригинальном соотношении сторон и


представляйте их в масштабе больше, чем 100%. Вам не нужно, чтобы иллюстрация
или изображение в вашем приложении выглядели ассимметрично или слишком
крупными. Позвольте пользователям решать, увеличить или уменьшить изображение.

Не используйте изображения, которые имитируют продукцию Apple в вашем


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

Не используйте иконки, изображения или скриншоты Apple в оформлении.


Проектные решения Apple охраняются авторским правом и не могут появиться в
вашем приложении, если только не предусмотрены системой.

Терминология и Стиль Формулировок

Каждое слово, отображаемое в приложении — это часть диалога между вами и


пользователями. Используйте этот диалог как возможность обеспечить ясность и
помочь людям почувствовать себя комфортно во время использования приложения.
Настройки — это неотъемлемое приложение для всех пользователей, в котором
используется простой прямой язык для описания того, что могут делать
пользователи. Например, Настройки > Не Беспокоить объясняет последствия
различных действий без использования технического жаргона, который может быть
сложным для понимания неискушёнными пользователями.

Используйте терминологию, в которой вы будете уверены, что она будет понятна


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

Используйте дружелюбный и неофициальный тон, но не слишком свободный. Вы не


хотите выглядеть слишком напыщенными или официальными, но вы так же хотите
избежать вероятности выглядеть притворно весёлыми или снисходительными.
Помните, что пользователи, вероятно, много раз прочитывают текст в
пользовательском интерфейсе вашего приложения, и то, что с первого взгляда
выглядит хорошо, может раздражать при повторении.

Мыслите как редактор газет и остерегайтесь избыточности или ненужных слов. Если
текст пользовательского интерфейса короткий и прямой, пользователи могут
воспринять его быстро и легко. Определяйте наиболее важную информацию,
выражайте её сжато и отображайте на видном месте, чтобы людям не приходилось
прочитывать слишком много слов для нахождения того, что им нужно, или для
понимания следующих действий.
Давайте элементам управления короткие обозначения или используйте хорошо
известные иконки. Люди с первого взгляда должны сказать, какие функции
выполняет элемент управления.

Позаботьтесь о том, чтобы описание дат было правильным. Когда вы отображаете


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

Сделайте большее из возможного, чтобы общаться с потенциальными


пользователями посредством создания качественного описания в App Store. В
дополнение к правильному описанию и выделению тех качеств, которые, по вашему
мнению, люди оценят больше всего, непременно:

 Исправьте все орфографические, грамматические и пунктуационные ошибки.


Хотя такие ошибки беспокоят не всех, для многих людей они могут стать
причиной создания негативного впечатления о качествах вашего приложения.

 Сведите слова, напечатанные прописными буквами, к минимуму. Случайные


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

 Рассмотрите описание устранения характерных ошибок. Если в новой версии


вашего приложения есть исправления, которых ждали пользователи,
упоминание об этом в описании может быть хорошей идеей.

Слияние с iOS

Слияние с iOS обозначает предоставлять пользователям захватывающий,


восхитительный опыт, который неотделим от платформы; но это не означает
создания приложения, которое выглядит как копия встроенного приложения.

Самый лучший способ объединения вашего уникального приложения с платформой


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

Правильно Используйте Стандартные Элементы Пользовательского Интерфейса

Хорошей идеей является использование стандартных элементов пользовательского


интерфейса, которые предоставляет UIKit, насколько возможно. Когда вы используете
стандартные элементы вместо создания специальных, и вы, и ваши пользователи
получают преимущество:

 Стандартные элементы пользовательского интерфейса автоматически


обновляются в случае, если iOS представляет модернизированную версию.
Специальные элементы не обновляются.

 Как правило, для персонализации внешнего вида или функционирования


стандартных элементов пользовательского интерфейса предлагаются разные
способы. Например, всем видам (объектам, которые перенимаются из UIView)
могут добавляться оттенки посредством особенностей tintColor, упрощающие
добавление цвета в ваше приложение.

 Людям удобно использовать стандартные элементы пользовательского


интерфейса, так что они сразу понимают, как ими пользоваться в вашем
приложении.

Прекрасно, если при использовании преимуществ применения стандартных


элементов пользовательского интерфейса вы:

Следуете руководящим указаниям для каждого элемента пользовательского


интерфейса. Когда элемент пользовательского интерфейса выглядит и работает так,
как люди ожидают, они могут полагаться на предыдущий опыт, чтобы использовать
его в вашем приложении. Вы можете найти указания по созданию элементов
пользовательского интерфейса в разделах Панели, Обзор Содержимого, Элементы
Управления и Всплывающие Окна.

Не смешивайте стили элементов пользовательского интерфейса из разных версий


iOS. Вам не хочется вводить пользователей в заблуждение тем, что вы отображаете
элементы пользовательского интерфейса отличных версий iOS от той, которая сейчас
установлена на устройстве.

По общему правилу, избегайте создания специальных элементов пользовательского


интерфейса, которые выполняют стандартные действия. Сначала спросите себя,
зачем вы создаёте специальный элемент пользовательского интерфейса, который
выполняет те же действия, что и стандартный. Если вам просто нужен уникальный
внешний вид, примите во внимание изменение вида стандартного элемента
посредством использования особенностей адаптирования программного интерфейса
приложения или оттенка цвета. Если вы хотите добиться слегка отличающегося
функционирования, непременно выясните, сможет ли стандартный элемент делать
то, чего вы хотите, когда вы скорректируете характерные особенности. Если вы
хотите добиться абсолютно другого функционирования, лучше всего создавать
специальный элемент, который не слишком похож на стандартный.

СОВЕТ

Конструктор Интерфейса облегчает получение стандартных элементов


пользовательского интерфейса, использование индивидуальной настройки внешнего
вида программного интерфейса приложения (API), доступ к характерным
особенностям и применение специальных и системных иконок к вашим элементам
управления. Чтобы узнать больше о Конструкторе Интерфейса, смотрите раздел
Xcode Overview.

Не используйте системные кнопки и иконки для обозначения чего-то еще. iOS


предоставляет много кнопок и иконок, которые вы можете использовать в своём
приложении. Удостоверьтесь, что вы понимаете документированное, семантическое
значение этих кнопок и иконок; не полагайтесь на интерпретацию их внешнего вида.
(Вы можете найти значение каждой иконки в разделе Кнопки Для Использования в
Панелях Инструментов и Навигации и Иконки для Панели вкладок.)

Если вы не можете найти системную кнопку или иконку, которая обладает


подходящим значением для определения функции в вашем приложении, вы можете
создать свою собственную. Для некоторых руководящих указаний, которые помогут
вам создать специальную иконку, смотрите раздел Иконки для Использования в
Панелях.

Если ваше приложение делает возможным эффект присутствия, разумно будет


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

Уменьшение Файла и Обработка Документов


iOS может помочь людям создавать файлы и управлять ими, но это не означает, что
люди должны думать о файловой системе на устройстве iOS.

Если ваше приложение помогает людям создавать и изменять документы, хорошо


отобразить библиотеку определённых для приложения документов, которая позволит
открыть существующий документ или создать новый. В идеале, такое отображение
библиотеки:

 Очень наглядно. Люди должны быть способны легко распознать документ,


который им нужен, посредством взгляда на визуальное представление
документов на экране.

 Позволяет людям совершать мельчайшие возможные жесты, чтобы сделать то,


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

 Включает в себя функцию создания нового документа. Вместо того, чтобы


заставлять людей заходить куда-то ещё для создания нового документа,
библиотека документов может обеспечить нажатие на поле для заполнения,
чтобы создать новый документ.

Например, приложение Pages отображает документы пользователя наряду с простым


способом создания новых документов в наглядном отображении библиотеки.

СОВЕТ

Вы можете использовать функцию быстрого предварительного просмотра, чтобы


позволить людям визуально обследовать документы в вашем приложении, даже если
ваше приложение не может их открыть. Чтобы узнать, как предоставить эту функцию
в вашем приложении, смотрите раздел Предварительный Просмотр.

Если ваше приложение позволяет людям использовать документы, которые они


создали в других приложениях, вы можете отобразить document picker view
controller, чтобы помочь им получить доступ к этим документам. Document picker
view controller может отображать документы в iCloud Drive пользователя в
дополнение к расширениям Проводника Документов, которые связаны с другими
приложениями, обеспечивающими составление и хранение документов. Чтобы узнать
больше о расширениях Проводника Документов, смотрите раздел Расширения
Проводника Документов; для того, чтобы узнать больше о document picker view
controller, смотрите раздел Document Picker Programming Guide.

Дайте людям уверенность, что их работа всегда будет сохранена, если они
однозначно не отменили или не удалили ее. Если ваше приложение помогает людям
создавать и редактировать документы, не требуйте от них однозначного сохранения
действий. На приложениях iOS должна быть ответственность за сохранение
информации пользователей и через определённые промежутки времени, и когда они
открывают другой документ или выходят из приложения.

Если создание содержимого не является основной функцией вашего приложения, но


вы позволяете людям переключаться между отображением информации и её
редактированием, имеет смысл спросить их о сохранении изменений. Для такой
ситуации хорошо подходит предоставление кнопки "Править" в виде, который
отображает информацию. Когда люди нажимают на кнопку "Править", замените ее
кнопкой "Сохранить" и добавьте кнопку "Отменить". Изменение кнопки "Править"
помогает напомнить людям, что они находятся в режиме редактирования и,
возможно, надо сохранить изменения, а кнопка "Отменить" предоставляет
возможность выйти без сохранения изменений.

Будьте Гибкими в Случае Необходимости

Для некоторых приложений может быть нужным предоставление пользователям


способа выбора настроек или конфигурации, но большинство приложений могут
избегать или отложить это. Удачные приложения сразу работают хорошо для
большинства пользователей одновременно предлагая некоторые удобные способы
для изменения пользовательского опыта.
Когда вы создаёте приложение, способное функционировать так, как ожидает
большинство пользователей, вы снижаете необходимость настроек. Если вам нужна
информация о пользователе, запросите эти данные у системы вместо того, чтобы
просить пользователей предоставить их. Если вы решаете обеспечить приложение
настройками, которые пользователям нужно менять редко, смотрите раздел The
Settings Bundle, чтобы узнать, как установить их в вашем коде.

Насколько возможно, предоставляйте параметры конфигурации в основном


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

Если необходимо, помогите пользователям напрямую выйти к параметрам


приложения в Настройках. В частности, если вы отобразите сообщение, которое
описывает, где найти параметры, например, "Зайдите в Настройки > Моё
Приложение > Конфиденциальность > Служба Определения Местоположения"
заменяется кнопкой, которая открывает это место в Настройках. Чтобы узнать, как
сделать возможной такой процесс, смотрите раздел Settings Launch URL.

Используйте Технологии iOS

iOS предоставляет огромный спектр технологий, которые осуществляют привычные


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

Некоторые технологии iOS, такие как Многозадачность и Управление Голосом — это


системные функции, которые должны быть включены во все приложения. Другие
технологии осуществляют специальные функциональные возможности приложений,
такие как оперирование билетами и подарочными картами (Wallet), осуществление
пользовательских покупок внутри приложения (Встроенные Покупки), отображение
встроенной рекламы (iAd Мультимедийная Реклама), объединение с Game Center и
поддержка iCloud.

Стратегии Дизайна

Принципы Дизайна
Эстетическая Целостность

Эстетическая целостность не измеряет красоту изображений приложения и не


характеризует его стиль; скорее, она определяет, насколько хорошо внешний вид
приложения и его характеристики взаимодействуют с его функциями для передачи
понятного сообщения.

Для людей важно, обеспечивает ли приложение теми функциями, которые должно


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

С другой стороны, в приложениях, подразумевающих эффект погружения, так как


это происходит в играх, пользователи ожидают захватывающих образов, которые
обещают веселье, восхищение и вдохновляют на открытия. Люди не ждут от игры,
что им придётся выполнять серьёзную или продуктивную задачу, но они ожидают,
что игровое оформление и особенности будут связаны с целью игры.
Логичность

Логичность позволяет людям переносить знания и умения из одной части


пользовательского интерфейса приложения в другую и из одного приложение в
другое. Логичное приложение не является копией другого приложения и не является
застоявшимся со стилистической точки зрения; напротив, в нём уделяется внимание
стандартам и особенностям, которые людям комфортно использовать, и оно
обеспечивает внутренне непротиворечивый опыт.

Чтобы определить, соблюдены ли в приложении iOS принципы логичности,


подумайте над этими вопросами:

 Соответствует ли приложение стандартам iOS? Правильно ли оно использует


системные элементы управления, виды и иконки? Объединяет ли оно
характеристики устройства так, как этого ожидают пользователи?

 Логично ли приложение само по себе? Используются ли единая терминология и


стиль в тексте? Всегда ли иконки соответствуют их смыслу? Могут ли люди
предсказать, что произойдёт при выполнении однотипных действий в
различных местах? Являются ли внешний вид и характеристики специальных
элементов пользовательского интерфейса одинаковыми во всём приложении?

 Соответствует ли приложение, в пределах разумного, своим прошлым версиям?


Остались ли элементы и смысл прежними? Существенно ли изменились
фундаментальные концепции?

Непосредственное Управление

Когда пользователи непосредственно управляют экранными объектами, вместо


использования отдельных контроллеров для управления, они больше вовлечены в
задачу, и им более понятны результаты их действий.
Используя Multi-Touch интерфейс, люди могут использовать жест сжатия, чтобы
напрямую увеличивать или уменьшать изображение или область содержимого. А в
игре пользователи взаимодействуют непосредственно с экранными объектами.
Например, в игре может появиться кодовый замок, который пользователи смогут
вращать, чтобы открыть.

В приложении iOS люди переживают непосредственное управление, когда они:

 Влияют на элементы экрана при помощи поворота или любого другого


движения устройства

 Используют жесты, чтобы управлять объектами на экране

 Видят, что их действия приводят к незамедлительным, видимым результатам

Обратная Связь

Обратная Связь подтверждает действия пользователей, показывает им результаты и


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

Едва различимая анимация может дать пользователям эффективную обратную связь,


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

Звук также может дать пользователям полезную обратную связь, но он не должен


быть единственным механизмом обратной связи, потому что люди не всегда могут
услышать своё устройство.

Метафоры

Когда виртуальные объекты и действия в приложении являются метафорами


знакомого опыта, происходит ли он из реального мира или цифрового, люди сразу
понимают, как использовать приложение.

Лучше всего, когда приложение использует метафору для предложения


использования или опыта без создания ограничений объекта или действия, на
которых она основано.

iOS предоставляет большой простор для метафор, поскольку люди физически


взаимодействуют с экраном. Метафоры в iOS включают в себя:
 Перетаскивание многоуровневых окон для демонстрации содержимого под
ними

 Перетаскивание, пролистывание или прокручивание объектов в игре

 Нажатие переключателей, проведение пальцем по слайдам и прокручивание


инструмента для выбора

 Просмотр страниц книги или журнала

Пользовательский Контроль

Пользователи, а не приложения, должны инициировать и контролировать действия.


Приложение может предложить способ действий или предупредить об опасных
обстоятельствах, но процесс принятия решений приложением без участия
пользователя обычно является ошибкой. В лучших приложениях найден правильный
баланс между предоставлением пользователям необходимых возможностей и
помощью во избежание нежелательных результатов.

Пользователям комфортнее управлять приложениями, когда характеристики и


управление знакомы и предсказуемы. И, когда действия просты и понятны,
пользователи легко могут понять и запомнить их.

Пользователи хотят иметь возможность отменить операцию до ее начала, чтобы


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

От Концепции до Продукта

Определите Ваше Приложение

Документация приложения — это лаконичное точное определение основной цели


приложения и его предполагаемой аудитории.

Создайте документацию приложения в начале проектно-конструкторских работ,


чтобы превратить идею и список функций в гармоничный продукт, который люди
захотят приобрести. Во время разработки используйте документацию чтобы решить,
будут ли иметь смысл потенциальные характеристики и особенности. Выполните
следующие шаги для создания хорошей документации к приложению.

1. Создайте Список Всех Функций, Которые, По Вашему Мнению, Понравятся


Пользователям

Двигайтесь вперёд и продумайте всё. На данный момент вы пытаетесь охватить все


задачи, связанные с вашей основной идеей продукта. Не переживайте, если ваш
список окажется очень большим, вы сможете уменьшить его позже.

Представьте, что ваша первоначальная идея заключается в разработке приложения,


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

 Создание списков

 Получение рецепта

 Сравнение цен

 Местоположение магазинов

 Комментарии к рецептам

 Получение и использование купонов

 Просмотр демоверсий приготовления

 Изучение различных кухонь

 Поиск замены ингредиента

2. Определите, Кто Ваши Пользователи

Теперь вам нужно выяснить, что отличает пользователей вашего приложения от


остальных пользователей iOS. В контексте основной идеи вашего приложения, что
является самым важным для них? На примере покупки продуктов, вы можете
спросить, ваши пользователи:

 Обычно готовят дома или предпочитают готовые блюда

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

 Строго соблюдают рецепты или используют их как вдохновение

 Часто покупают небольшое количество продуктов или редко делают массовые


закупки

 Хотят быть в курсе нескольких незавершенных списков для различных целей


или просто хотят запомнить несколько вещей, которые надо купить по дороге
домой

 Настаивают на конкретных брендах или обходятся наиболее удобными


альтернативами

 Как правило, покупают похожий набор элементов за каждый поход в магазин


или покупают, согласно пунктам, перечисленным в рецепте

После размышления над этими вопросами представьте, что вы выделили три


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

3. Фильтруйте Список Характеристик, Пока Определяете Аудиторию

Если у вас после принятия решения о нескольких характеристиках, в конечном итоге,


имеется только несколько функций приложения, вы на правильном пути: Лучшие
приложения iOS фокусируются на задаче, которую они помогают совершить
пользователям.

Например, рассмотрим длинный список возможных функций, которые вы


определили в шаге 1. Хотя все эти функции полезны, вряд ли каждая из них будет
оценена аудиторией, которую вы выделили в шаге 2.

Когда вы изучите ваш список функций в контексте вашей целевой аудитории, вы


поймете, что ваше приложение должно быть основано на трех основных функциях:
Создание списков, получение и использование купонов, а также получение рецептов.

Теперь вы сможете создавать документацию к приложению конкретно


определяющую, что делает приложение и для кого. Хорошей документацией этого
приложения для покупки продуктов может быть:
“Создание списка покупок — инструмент для экономных людей, которые любят
готовить.”

4. Не Останавливайтесь На Этом

Используйте документацию к приложению на протяжении всего процесса разработки


для определения пригодности функций, элементов управления и терминологии.
Например:

Когда вы решаете добавить новую функцию, спросите себя, соответствует ли она


основной цели вашего приложения и вашей целевой аудитории. Если это не так,
отложите ее в сторону, она может послужить основой другого приложения.
Например, вы решили, что пользователи заинтересованы в необычном
приготовлении пищи, так что фокус на готовых смесях для тортов и готовой еде,
возможно, не будет оценён.

При рассмотрении внешнего вида и характеристик пользовательского интерфейса,


спросите себя, оценят ли пользователи простой рациональный стиль или более
тематически направленный. Руководствуйтесь тем, что пользователи ожидают
достичь с помощью вашего приложения: выполнять серьезные задачи, получать
быстрые ответы, копаться в обширном содержании или развлекаться. Например, хотя
ваше приложение списка покупок должно быть простым и быстрым в использовании,
ваша аудитория, скорее всего, оценит тематический пользовательский интерфейс,
который отображает множество красивых фотографий ингредиентов и блюд.

Как только вы определились с терминологией, старайтесь, чтобы она соответствовала


пониманию аудитории. Например, даже если ваша аудитория не состоит из
профессиональных поваров, вы достаточно уверены, что они хотят видеть
правильные определения ингредиентов и технологий.

Привязка Индивидуализации к Задаче

В лучших приложениях iOS присутствует баланс между индивидуализацией и


ясностью цели, а также простотой в использовании. Для достижения этого баланса в
вашем приложении, удостоверьтесь, что продумываете индивидуализацию в начале
процесса проектирования. Потому что вопросы касательно брендинга,
оригинальности и маркетинговой ценности часто влияют на решения в
индивидуализации, не так просто оставаться сосредоточенным на том, как
индивидуализация влияет на пользовательский опыт.
Начните с продумывания задач в вашем приложении: Как часто пользователи
выполняют их и при каких обстоятельствах?

Например, представьте себе приложение-калькулятор, в котором для отображения


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

Для сравнения рассмотрим приложение GarageBand. Приложение GarageBand могло


бы способствовать созданию музыки без отображения красивых реалистичных
инструментов, но, в таком случае, это сделало бы его менее наглядным и менее
приятным. В приложении GarageBand индивидуальный пользовательский интерфейс
не только показывает людям, как пользоваться приложением, он также облегчает
выполнение основной задачи — создание музыки.
Когда вы думаете о том, как индивидуализация может вовлечь в выполнение задачи
или отвлечь от него, не забывайте эти руководящие принципы.

Всегда имейте основание для индивидуализации. В идеале, индивидуализация


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

Избегайте, насколько это возможно, когнитивной нагрузки пользователя.


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

Будьте внутренне последовательными. Чем более индивидуален ваш


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

Всегда полагайтесь на содержимое.Поскольку стандартные элементы хорошо


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

Подумайте дважды, прежде чем изменять дизайн стандартных контроллеров. Если вы


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

Не забудьте тщательно проверить индивидуализированные элементы


пользовательского интерфейса. Во время проверки проконтролируйте, что
пользователи видят и могут предсказать действия ваших элементов и легко
взаимодействуют с ними. Если, например, вы создаете контроллер размер которого
меньше, чем 44 х 44, люди столкнутся с проблемой нажатия. Или если вы создаете
окно, по-разному реагирующее на жест смахивания, удостоверьтесь, что усилия,
которые люди должны приложить для взаимодействия с функциями, которые
предоставляет окно, стоят того.

Прототип и Итерация

Прежде чем инвестировать значительные ресурсы в разработку вашего проекта,


хорошей идеей было бы создание прототипа для тестирования пользователями. Даже
если у вас есть только несколько коллег для тестирования прототипов, вы сможете
использовать их свежее видение функциональности вашего приложения и удобства
использования.

На ранних этапах разработки проекта вы можете использовать бумажные прототипы


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

Вы получите более ценные отзывы, если вы сможете собрать наполненный


содержанием прототип, работающий на устройстве. Когда пользователи смогут
взаимодействовать с прототипом на устройстве, они с большей вероятностью
обнаружат места, где ваше приложение не отвечает их ожиданиям, или
пользовательский опыт слишком сложен.

Самый простой способ создания надежного прототипа — использование одного из


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

Вам не требуется предоставлять большое количество содержимого или включать все


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

Когда вы основываете свой прототип на шаблоне Xcode, вы получаете множество


функциональных возможностей бесплатно и довольно легко внести корректировки в
дизайн в ответ на критику. В сжатые сроки выполнения работ, вы должны быть
готовы протестировать несколько итераций вашего прототипа, прежде чем утвердить
свой проект и выделить ресурсы для его реализации. Чтобы начать изучение Xcode,
см. раздел Xcode Overview.

Практический Пример: От Рабочего Стола к iOS

Keynote на iPad

Keynote на рабочем столе — это мощное, удобное приложение для создания


презентаций мирового уровня. Людям нравится, как Keynote совмещает в себе
простоту использования с полным контролем над бесчисленными аккуратными
деталями, такими как анимация и атрибуты текста.
Keynote на iPad отражает суть Keynote на рабочем столе и делает ее родной на iPad
путем создания пользовательского опыта таким образом:

 Основное внимание уделяется пользовательскому содержанию

 Снижение сложности без потери потенциала

 Обеспечение клавишами быстрого доступа, которые помогают и восхищают

 Адаптация знакомых признаков восприятия рабочего стола

 Обеспечение обратной связи, а также связи через яркие анимации

Пользователи Keynote мгновенно понимают, как использовать приложение на iPad,


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

Преобразование Keynote от рабочего стола до iPad основано на множестве


модификаций и модернизаций, которые варьируются от едва заметных до
основательных. Вот некоторые из наиболее заметных адаптаций:

Усовершенствованная панель инструментов. Совсем немного элементов присутствуют


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

Упрощенный приоритетный контроллер, реагирующий на то, на чём сфокусирован


пользователь. Keynote-контроллер на iPad автоматически содержит инструменты и
атрибуты, необходимые пользователям для изменения выбранного объекта. Часто
люди могут вносить изменения, которые им необходимы, в первом окне
контроллера. Если им нужно вносить изменения не так часто, они могут перейти к
другим окнам контроллера.

Много готовых коллекций стиля. Люди легко могут изменять внешний вид объектов,
таких как диаграммы и таблицы, за счет использования готовых стилей. В
дополнение к цветовой схеме каждая коллекция включает в себя подготовленные
атрибуты, такие как заголовки таблицы и оси деления маркировок, разработанные
для координирования своих действий с общей темой.

Непосредственное управление содержимым, обогащённым выразительной


анимацией. В Keynote на iPad пользователь перетаскивает слайд на новую позицию,
вращая объект, чтобы повернуть его, и нажимает на изображение, чтобы выбрать его.
Впечатление от непосредственного управления увеличивается посредством
отзывчивой анимации, которую выполняет Keynote на iPad. Например, слайд немного
пульсирует, когда пользователи перемещают его, и когда они перетаскивают его на
новое место, окружающие слайды колеблются, освобождая для него место.

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

Почта на iPhone фокусируется на основных функциональных возможностях Почты на


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

 Четкий вид, который размещает содержимое пользователей впереди по центру

 Различные окна, способствующие выполнению различных задач

 Интуитивно понятная структура информации, масштабируемая без каких-либо


усилий

 Мощные инструменты редактирования и организации, доступные при


необходимости
 Едва заметные, но выразительные анимации, сопровождающие действия и
обеспечивающие обратную связь

Важно понимать, что почта на iPhone не лучше Почты на рабочем столе, а, скорее, это
почта, разработанная для мобильных пользователей. Концентрируясь на
подмножестве функций рабочего стола и представлении их в привлекательном и
простом пользовательском интерфейсе, почта на iPhone предоставляет
пользователям ядро почтового функционала, пока они мобильны.

Для внедрения опыта использования Почты в мобильный контекст, почта на iPhone


изменила пользовательский интерфейс в нескольких ключевых направлениях.

Чёткие, узко-сфокусированные экраны. Каждый экран отображает один аспект


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

Легкая, предсказуемая навигация. Делая одно нажатие на экран, пользователи


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

Простые нажимающиеся контроллеры, доступные, когда требуется. Поскольку


написание и проверка новых сообщений электронной почты являются первичными
действиями, которые, возможно, люди хотят производить в любых условиях, Почта
на iPhone делает их доступными в нескольких экранах. Когда люди просматривают
сообщение, такие функции, как “ответить”, “переместить”, и “удалить” доступны,
поскольку они связаны с сообщением.

Различные виды обратной связи для различных задач. Когда люди удаляют
сообщение, происходит анимация перемещения в значок корзины. Когда люди
посылают сообщение, они могут видеть процесс, а когда отправление завершено,
они могут услышать характерный звук. Глядя на едва заметный текст в панели
инструментов списка сообщений, пользователи могут сразу увидеть, когда их
почтовый ящик последний раз обновлялся.

Веб-Содержимое на iOS

Safari предоставляет выдающийся опыт веб-просмотра содержимого на мобильных


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

Веб-сайты, основанные на стандартах, хорошо отображаются на устройствах iOS. В


частности, web-сайты, открываемые устройством и не использующие плагинов,
отлично смотрятся как на iPhone, так и на iPad с небольшими, если таковые имеются,
изменениями.

Кроме того, самые успешные web-сайты обычно:

 Настраивают окно просмотра соответствующим для устройства образом, если


необходимо, чтобы ширина страницы соответствовала ширине устройства

 Избегают фиксированного позиционирования CSS, чтобы содержание не


выходило за пределы экрана, когда пользователи масштабируют или
перетаскивают страницу

 Включают сенсорный пользовательский интерфейс, который не полагается на


взаимодействия в виде связанного списка

Иногда допустимы другие изменения. Например, web-приложения всегда


устанавливаются по ширине окна должным образом и часто скрывают
пользовательский интерфейс Safari на iOS. Чтобы узнать больше о том, как
произвести эти изменения, смотрите разделы Configuring the Viewport и Configuring
Web Applications в Safari Web Content Guide.
Web-сайты могут адаптировать пользование интернетом Safari на рабочем столе в
iOS также посредством других способов:

Размещение клавиатуры в Safari на iOS. Когда видны клавиатура и панель над ней
(form assistant), то Safari на iPhone отображает web-страницы в области ниже
текстового поля URL и выше клавиатуры и панелью над ней (form assistant).

Размещение всплывающего меню управления в Safari на iOS. В браузере Safari на


рабочем столе всплывающее меню, содержащее большое количество элементов,
отображается так же, как в приложениях OS X; то есть, открывается меню, чтобы
отобразить все элементы, распространяясь за границы окна, если это необходимо. В
браузере Safari на iOS всплывающее меню отображается при помощи родного
элемента, обеспечивающего гораздо лучшее пользовательское восприятие.
Например, на iPhone всплывающее меню появляется в пикере (списке вариантов, из
которых пользователь может выбрать). Чтобы узнать больше об управлении пикером,
смотрите раздел Пикер.

Технологии iOS

3D Touch

3D Touch предоставляет пользователям iOS 9 дополнительный аспект


взаимодействия. На поддерживаемых устройствах люди быстро могут выбрать
определённые для приложения действия с Начального экрана посредством нажатия
на иконку приложения. Внутри приложения люди могут использовать различные
нажатия для быстрого просмотра элемента, открытия элемента в раздельном окне и
получения доступа к соответствующим действиям. (Чтобы узнать больше об
использовании 3D Touch в вашем коде, смотрите раздел Adopting 3D Touch on
iPhone.)

Peek (быстрый взгляд) и Pop (появление)

Peek (быстрый взгляд) позволяет пользователям получать быстрый просмотр элемента


и выполнять соответствующие действия без потери текущего контекста. Элемент
указывает на то, что поддерживает peek (быстрый взгляд) посредством отображения
маленького прямоугольного окна (иногда называемого hint (подсказка)) в ответ на
лёгкое нажатие.

Peek (Быстрый Взгляд) в Safari


Быстрые действия в peek (быстром взгляде) Safari

Peek (быстрый взгляд):


 Появляется, когда пользователь нажимает на элемент, который поддерживает
эту опцию, и исчезает, когда нажатие прекращается

 Открывает детальное представление элемента (называется pop (появление))


когда пользователи нажимают немного сильнее на окно peek (быстрого
взгляда)

 Может осуществлять быстрые действия, соответствующие элементу, когда


пользователи делают жест смахивания внутри окна peek (быстрого взгляда)

Когда пользователи слегка нажимают на экран, элемент, поддерживающий опцию


peek (быстрый взгляд), подсказывает, что возможно дальнейшее взаимодействие
посредством отображения прямоугольного окна, обусловленного вами. Окно должно
быть достаточно крупным, чтобы палец пользователя не загораживал содержимого, и
достаточно детальным, чтобы пользователь мог решить, нужно ли нажать немного
сильнее, чтобы увидеть peek (быстрый взгляд).

ВАЖНО

Важно, чтобы вы применили опции peek (быстрый взгляд) и pop (появление) в


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

Используйте опцию peek (быстрый взгляд), чтобы обеспечить живое содержательное


изображение элемента. Лучше всего, когда опция peek (быстрый взгляд) даёт
пользователям достаточно информации об элементе, чтобы расширить их текущую
задачу. Например, пользователи могут использовать peek (быстрый взгляд) для
предпросмотра веб-страницы ссылки URL в сообщении до того, как они решат
открыть веб-сайт в Safari или поделиться ссылкой с друзьями. В экранной таблице
peek (быстрый взгляд) показывает пользователям детальное изображение элемента в
строке.

Обеспечьте опцию pop (появление) для каждой опции peek (быстрый взгляд). Даже
если опция peek (быстрый взгляд) даёт пользователям большую часть информации,
которая им нужна, вы должны всегда предоставлять пользователям переход к pop
(появлению), если они решат переключиться от текущей задачи и сфокусироватьсья
на элементе. Pop (появление) должно иметь такой же вид, как и тот, что видят
пользователи, когда нажимают на элемент.
Не делайте одновременно возможными опции peek (быстрый взгляд) и меню
редактирования для одного элемента. Если две функции возможны для одного
элемента, это может вызвать путаницу. (Для получения большей информации о Меню
редактирования, смотрите раздел Меню редактирования.)

Избегайте отображения элементов, которые похожи на кнопки, внутри опции peek


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

Если необходимо, обеспечьте быстрые действия опции peek (быстрый взгляд). Внутри
быстрого просмотра пользователи могут производить жест смахивания для
демонстрации действий, соответствующих элементу. Например, быстрые действия в
peek (быстром взгляде) Почты включают в себя "Ответить Всем", "Переслать" и
"Переместить Сообщение". Не каждому режиму peek (быстрому взгляду) нужны
быстрые действия, но если вы уже обеспечили для элемента специальные действия
касания и удержания, хорошей идеей будет обеспечить такие же действия внутри
режима peek (быстрого взгляда), которые замещают касание и удержание элемента.
(Имейте ввиду, что быстрые действия peek (быстрого взгляда) в веб-окне
поддерживаются автоматически.)

Не используйте peek (быстрый взгляд) как единственный способ активировать


соответствующие элементу действия. Не все устройства поддерживают опции peek
(быстрый взгляд) и pop (появление), а некоторые пользователи могут отключить 3D
Touch, так что важно найти иные способы обеспечить работу peek (быстрого
просмотра) в вашем приложении. Если ваше приложение работает на более старых
устройствах, имеет смысл отобразить быстрые действия peek (быстрого взгляда) в
окне, которое видят пользователи, когда касаются и удерживают элемент.

Быстрые Действия Начального Экрана

Быстрые действия начального экрана дают пользователям удобный способ выполнять


мощные, соответствующие приложению действия с Начального экрана.

Быстрые Действия Камеры на Начальном Экране


Быстрые Действия Почты на Начальном Экране

Быстрые действия начального экрана:


 Появляются, когда пользователи нажимают немного сильнее, чем при касании
и удержании, на иконку приложения Начального экрана

 Отображает короткий заголовок, иконку и дополнительный подзаголовок,


который вы встраиваете

 Не поддерживает никакого другого специального содержимого

 Может отображать оперативную информацию а случае обновления вашего


приложения

Используйте быстрые действия Начальной страницы для осуществления


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

Избегайте использования быстрых действий Начального экрана для упрощения


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

Избегайте изменения быстрых действий Начального экрана таким образом, который


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

Не используйте быстрые действия Начальной страницы как способ оповестить


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

Обеспечивайте ёмкий заголовок (и подзаголовок) и шаблон иконки для каждого


быстрого действия Начального экрана. Заголовок должен мгновенно сообщать о
результатах этого действия; например, "Маршрут Домой", "Создать Новый Контакт" и
"Новое Сообщение." Вы также можете создать дополнительный подзаголовок для
предоставления пользователю более широкого контекста. Например, Почта
использует подзаголовок, чтобы сообщить пользователям о наличии непрочитанных
писем в быстрых действиях VIP Начального экрана. Не включайте название вашего
приложения или постороннюю информацию в заголовок и подзаголовок, и
удостоверьтесь, что обращаете внимание на местонахождение, когда создаёте текст.

Важно сохранять заголовок настолько коротким, насколько это возможно, чтобы


избежать сокращения и чтобы помочь пользователям быстро понять действие. Если
вы указываете подзаголовок, система сокращает слишком длинный заголовок,
который нельзя уместить в одну строку; если вы не указываете подзаголовок, система
разбивает заголовок на две строки.

Вы можете выбрать среди множества шаблонных иконок, предоставленных системой,


или вы можете создать свою собственную иконку. Для подробных указаний
касательно размера иконок, выравнивания контуров и расположения загрузите
Шаблоны Иконок Быстрых Действий Начального Экрана с
https://developer.apple.com/design/downloads/Quick-Action-Guides.zip. Чтобы узнать
больше о создании шаблонов иконок, см. раздел Шаблоны Иконок.

Система автоматически отображает иконки слева или справа списка быстрых


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

Живые Фотографии позволяют пользователям запечатлеть и вновь пережить приятные


воспоминания в режиме движения и звука. Появившись на iOS 9, приложение Камера
захватывает дополнительно содержимое, включая аудио и дополнительные кадры
перед и после фото, что добавляет жизни привычным фотоснимкам.

В приложениях, которые работают на iOS 9.1 и выше, вы можете позволить


пользователям наслаждаться Живыми Фотографиями и делиться ими внутри вашего
приложения. Эти руководящие указания помогут вам обеспечить пользователей
потрясающим опытом.

Отображайте Живое Фото как традиционное в среде, которая не поддерживает


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

Не отображайте отдельно дополнительные кадры и аудио Живых Фотографий. Для


пользователей важно использовать Живые Фотографии логичным образом, который
использует одно визуальное отображение и модель взаимодействия во всём
приложении. Разбор Живого Фото и представление его компонентов по-отдельности
приводит к неудачному опыту использования.

Удостоверьтесь, что пользователи могут отличить Живое Фото от обычных


фотоснимков. Особенно важно помочь пользователям произвести различие, когда
они хотят поделиться фотографией. Наилучший способ показать пользователям,
Живое ли фото они видят, это отобразить незначительное движение, намекающее на
Живое Фото. В случаях, когда намёк невозможен, вы можете отобразить на Живом
Фото системный знак. Живое Фото никогда не отображает кнопку воспроизведения,
которая выглядит как кнопка воспроизведения на видео.

ПРИМЕЧАНИЕ

Обеспечение эффекта видимых движений, который пользователи видят во время


прокручивания фотографий в полноэкранном режиме приложения Фотографии,
невозможно.

Применяйте корректировки пользователей ко всем кадрам Живого Фото. Если ваше


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

Предоставьте пользователям предпросмотр всего содержимого Живого Фото до того,


как они решат поделиться им. Если ваше приложении содержит пользовательский
интерфейс, который помогает пользователям выбирать фотографии, чтобы
поделиться, дайте им способ делиться Живым Фото так же как обычным.
Если вы используете системный знак, помещайте его в одинаковое место на каждом
Живом Фото. Обычно, знак выглядит хорошо в углу фотографии, где не отвлекает
пользователя от фото. Удостоверьтесь, что применяете знак единым образом во всём
приложении, чтобы пользователи могли полагаться на него для определения Живого
Фото. iOS предоставляет два стиля изображения знаков:

 Оверлей. Оверлей включает затемнение, которое хорошо выглядит поверх


содержимого фотографии.

 Сплошной тон. Сплошной фон (без затемнения) может использоваться для


создания шаблонной иконки, которую вы можете окрасить.

iOS также предоставляет вариант знака сплошного фона, который включает в себя
перечёркивание поверх изображения для обозначения того, что Живое Фото
временно относится к обычному.

Предоставьте пользователям приятный опыт, когда они загружают Живое Фото. В


особенности, пользователям нужно знать, что элемент, который они загружают, это
Живое Фото, и им надо знать, что они могут его воспроизвести. Если вы показываете
индикатор выполнения для Живого Фото, которое еще не проигрывается,
удостоверьтесь, что используете индикатор соответствующим образом с другими
загрузками внутри вашего приложения.

Wallet

Wallet помогает людям видеть и управлять квитками, то есть цифровым


представлением материальных элементов, таких как посадочные талоны, купоны,
членские карточки и карточки постоянного покупателя, а также билеты. Wallet также
позволяет людям добавлять свои кредитные, дебетовые и магазинные карты для
использования в Apple Pay. В вашем приложении вы можете создать квиток,
распространить его для пользователей и обновить, если что-то изменится.
Платформа PassKit упрощает использование содержимого, разработанного
пользователем, для сбора и доступа к квитку, когда он находится в библиотеке
квитков пользователя. (Чтобы узнать о ключевых принципах технологии Wallet и об
использовании программного интерфейса PassKit, см. раздел Wallet Developer Guide.)
Последующие руководящие указания могут помочь вам в создании квитка, который
люди захотят иметь в Wallet и которым будут наслаждаться.

Создайте квиток, который будет выглядеть хорошо на всех устройствах. Когда вы


выбираете тип квитка, такой как посадочный талон, купон, билет, карточка
постоянного покупателя или универсальный квиток, вы получаете определённый
стиль расположения и набор полей для работы (для получения подробностей
касательно разных типов квитка, см. раздел Pass Style Sets the Overall Visual
Appearance). Система надлежащим образом отображает ваш квиток на каждом
устройстве, так что важно правильно использовать поля квитка. На Apple Watch, к
примеру, штриховые изображения и изображения миниатюр не отображаются, так
что вам не следует размещать важную информацию в этих элементах. Чтобы узнать
больше о расположении квитков на Apple Watch, см. раздел. Designing Passes for
Apple Watch.

Используйте подходящие поля квитков для отображения текста. Использование


полей позволяет пользователям Управления Голосом получить всю информацию
вашего квитка и улучшает вид вашего квитка. Хорошей идеей также является
избегание встраивания текста в изображения и использования индивидуальных
шрифтов, потому что не все изображения отображаются на всех устройствах, а для
пользователей может оказаться сложным прочтение такого текста.

Избегайте использования языка, который определяет устройство. Вы не можете


предсказать, каким будет устройство, на котором пользователи захотят просмотреть
ваш квиток, так что не используйте язык, который на определённом устройстве не
будет нести никакого смысла. Например, текст, который говорит пользователям
"проведите по экрану для отображения" содержимого, не будет иметь смысла, если
отобразится на Apple Watch.

Насколько возможно, избегайте простого воспроизведения существующего


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

Будьте избирательны касательно информации, которую вы помещаете на переднюю


сторону квитка. Люди ожидают, что уже при взгляде на квиток они смогут получить
необходимую информацию, так что передняя сторона квитка должна быть
лаконичной и лёгкой для прочтения. Если есть дополнительная информация,
которая, по вашему мнению, может понадобиться людям, лучше поместить её на
заднюю сторону квитка, чем затеснять её спереди. Имейте ввиду, что квитки на Apple
Watch не предусматривают вида сзади.

Избегайте использования простого белого фона. Квиток выглядит наилучшим


образом, когда его фон яркого чистого цвета, либо он отображает изображение с
сильными красочными цветами. Когда вы создаёте фон, всегда будьте уверены, что
он не препятствует читабельности содержимого.

Используйте текстовое поля логотипа для названия вашей компании. Текст в


текстовом поле логотипа предоставлен одинаковым шрифтом на всех квитках. Чтобы
избежать несоответствия с другими квитками в Wallet, рекомендуется вводить текст в
текстовое поле логотипа вместо использования специального шрифта.

Используйте белый логотип компании. Изображение логотипа должно быть в


верхнем левом углу квитка, рядом с названием вашей компании. Для наилучших
результатов, создайте белую монохромную версию вашего логотипа, которая не
будет включать в себя текст. Если вы хотите выгравировать логотип, чтобы он
соответствовал предоставленному тексту логотипа, добавьте падающую тень чёрного
цвета, взятом в точке оси Y со смещением от нуля в 1 пиксель, величину размытия в 1
пиксель и плотность 35%.

Используйте прямоугольный штрих-код, если возможно. Из-за расположения квитка


прямоугольный штрих-код, такой как PDF417, выглядит лучше чем квадратный. Как
показано ниже с правой стороны, квадратный штрих-код создаёт пустое
пространство с обеих сторон и может вертикально заполнить поля сверху и снизу.

Прямоугольный штрих-код хорошо вписывается в расположение

Квадратный штрих-код заполняет остальные поля

Оптимизируйте изображения для показа. Так как пользователи часто получают квитки
по электронной почте или через Safari, важно сделать загрузку настолько быстрой,
насколько возможно. Чтобы улучшить пользовательский опыт, используйте самые
маленькие файлы изображений, которые удовлетворяют желаемому внешнему виду.
Увеличивайте полезность квитка посредством его обновления в случае
необходимости. Даже если квиток представляет физический элемент, который не
изменяется, ваш электронный квиток может предоставить улучшенный опыт
посредством отражения реальных изменений. Например, вы можете обновить квиток
посадочного талона на самолёт в случае задержки рейса, чтобы люди всегда
получали актуальную информацию, когда проверяют квиток.

Apple Pay

Apple Pay — это простой, надёжный и конфиденциальный способ совершения


платежей на устройствах iOS. При покупке материальных товаров и услуг внутри
приложения, люди могут использовать Apple Pay, чтобы быстро и надёжно
предоставить контактную и платёжную информацию, а также информацию о
доставке.

Используя Apple Pay люди могут совершать покупки без создания учётной записи или
ввода информации. Apple Pay в значительной степени ускоряет процесс оформления
заказов и оплаты, помогая избежать предварительной регистрации и обеспечивая
пользователей улучшенным опытом в поиске продукции и лёгкости покупок. Для
большей информации см. раздел Apple Pay Programming Guide.
Пользовательский интерфейс Apple Pay — чёткий, рациональный и ненавязчивый. Он
состоит из трёх частей, которые появляются в различном контексте:

Кнопки. Кнопка Apple Pay говорит пользователям, что они могут совершить покупку в
текущем контексте, таком как страница продукта. Когда пользователи нажимают
кнопку Apple Pay, сразу же отображается окно оплаты (показано ниже) и помогает им
начать процесс покупки. Кнопка Apple Pay "Установить" даёт пользователям
возможность установить Apple Pay. Вы получаете обе кнопки посредством
использования thePKPaymentButton API (чтобы узнать больше, см. раздел
PKPaymentButton Class Reference). Для получения большей информации об
использовании кнопок Apple Pay см. раздел Apple Pay Identity Guidelines.

Знак Apple Pay. Пользователи ожидают увидеть знак Apple Pay, когда им необходимо
выбрать способ оплаты и завершить ввод дополнительной информации перед
авторизацией платежа. Знак Apple Pay должен появляться только когда остальные
способы оплаты также отображаются в таком же или похожем формате.

Окно оплаты. До того, как пользователь подтверждает заказ и платёж, Apple Pay
отображает окно оплаты и контактную, платёжную а также информацию о доставке,
относящуюся к оформлению заказа. Хотя люди могут внести некоторые изменения в
окне оплаты, например, выбрать другой способ доставки, им не обязательно что-то
менять или вводить дополнительную информацию. Когда пользователи видят окно
оплаты, они должны быть способны сразу завершить транзакцию и произвести
оплату.

Всегда отображайте пользовательский интерфейс Apple Pay для людей, которые


могут его использовать. Когда люди используют поддерживающее устройство и они
активировали карту, которую вы поддерживаете, вероятно, в вашем приложении они
захотят использовать Apple Pay. Оправдайте ожидания пользователей посредством
установки Apple Pay вариантом для оплаты по умолчанию.

Не отображайте пользовательский интерфейс Apple Pay, если пользователь не может


использовать Apple Pay. Если пользователь оперирует устройством, которое не
поддерживает Apple Pay, предложение использовать его в качестве оплаты может
ввести в заблуждение. Тем не менее, если пользователь оперирует устройством,
которое поддерживает Apple Pay, но у него нет кредитной или дебетовой карты для
использования, вы можете отобразить кнопку "Установить" Apple Pay.

Отображайте окно оплаты сразу после того, как пользователь нажимает кнопку Apple
Pay. Просьба совершать дополнительные шаги после того, как люди решили начать
процесс оформления заказа и оплаты при помощи Apple Pay, вносит в процесс
противоречие и может разочаровать ваших пользователей. Не отображайте
дополнительные предупреждения или модальные окна после того, как пользователь
нажал кнопку Apple Pay. Если люди могут использовать такие вещи как скидки или
промокоды, найдите способ принять эту информацию до того, как они нажмут
кнопку Apple Pay.

Отображайте кнопку Apple Pay такого же или большего размера, чем остальные
видимые кнопки оплаты. Сделайте кнопку Apple Pay более заметной, чтобы помочь
пользователям с лёгкостью обнаружить её.
Используйте Handoff, чтобы помочь пользователям совершить покупку, которую они
начали делать на Apple Watch. Владельцы Apple Watch могут совершать покупки в
магазинах, но они не могут совершать покупки внутри вашего Apple Watch
приложения. Когда владельцы начинают совершать покупку в вашем приложении
Apple Watch, отобразите сообщение, в котором говорится, чтобы они завершили
оплату на своём iPhone. Для наилучшего опыта используйте Handoff для прямого
доступа к вашему iOS приложению и немедленно отобразите окно оплаты, в котором
расположена соответствующая информация.

Для получения дополнительный руководящих указаний касательно использования


кнопок Apple Pay и знака Apple Pay, см. раздел Apple Pay Identity Guidelines.

Индивидуализация Окна Оплаты

Вы можете индивидуализировать то, что находится в окне оплаты Apple Pay, в


зависимости от информации, которая вам нужна, чтобы завершить транзакцию и
информации для сообщения пользователю о покупке.

Отображайте только ту информацию в окне оплаты, которая является важной для


совершения транзакции. Люди могут смутиться или встревожиться, если окно оплаты
Apple Pay отобразит постороннюю информацию. Например, если товар будет
доставлен или осуществлён электронно, имеет смысл запросить контактный адрес
электронной почти, а не адрес доставки. Запрос адреса доставки в таком случае
может создать у пользователей впечатление, что что-то случайно будет доставлено
им домой или на работу или вызовет беспокойство, что доступ к их информации был
получен без надобности.

Позвольте пользователям выбрать способ доставки или опцию самовывоза внутри


окна оплаты. Пользователи могут выбрать способ доставки из любого числа опций,
которые вы внесли в окно оплаты Apple Pay. Чтобы установить способ доставки,
используйте надпись, стоимость и дополнительную вторую строку для
предоставления приблизительной даты доставки. В качестве альтернативы вы можете
изменить название секции с "Доставка" на "Самовывоз", чтобы позволить
пользователям определить местоположение для курьерской доставки или самовывоза
из пункта транспортной службы.

Используйте статью расходов для регулярных платежей и расходов, которые


добавляются к промежуточному итогу покупки. Статья расходов состоит из названия
и стоимости. Используйте статью расходов для:

 Обозначения, что пользователь авторизует регулярный платёж для статьи


расходов, например, "Ежемесячная подписка $19.99"

 Уведомления пользователя о дополнительных расходах, например, "Упаковка


Подарка $5.00" или "Налог $4.53"

 Отображения купона или скидки с отрицательной стоимостью, например,


"Пятничная Скидка -$2.00"

 Обозначения времени ожидания, например, "Время и Расстояние..." для службы


доставки

Не используйте статью расходов, чтобы показать конкретный перечень товаров,


которые входят в покупку.

Насколько возможно, создайте название статьи расходов, которое можно отобразить


на одной строке. Название статьи расходов должно быть понятно пользователям.
Длинные названия пользователям сложно понять при беглом прочтении.

Предоставьте название фирмы после слова "ОПЛАТИТЬ" на той же строке, что и


итоговая сумма. Удостоверьтесь, что используете такое же название фирмы, какое
пользователи увидят при проверке счёта, когда проверят кредитную карту или
банковскую выписку. Это важно, потому что это помогает заверить пользователей в
том, что их платёж идёт туда, куда они думают. Если ваше приложение выполняет
роль посредника и не является конечным продавцом, чётко дайте это понять
посредством обозначения “PAY END_MERCHANT_NAME (VIA YOUR_APP_NAME).”

Сообщите, что дополнительная стоимость возможна, если итоговая сумма неизвестна


на момент авторизации платежа. Например, поездка на машине, основанная на
расстоянии или времени, может изменить свою стоимость с момента авторизации
платежа до момента отправки. Либо клиент может добавить чаевые после того, как
товар был доставлен. В таких случаях разумно предоставить очень понятное
объяснение внутри окна оплаты. Когда вы используете статью расходов связанную с
обновлением итоговой суммы, стоимость автоматически отображается как “AMOUNT
PENDING” (Идёт расчёт суммы). Также, если вы предоставляете инструкцию платежа
для особой суммы, удостоверьтесь, что окно оплаты правильно отражает эту
информацию.

Упрощение Процесса Оформления Заказов и Оплаты

Люди ценят, что при использовании Apple Pay они могут делать покупки легко и
быстро. Чем меньше шагов в процессе оформления заказа пользователям нужно
совершать и чем меньше информации вводить, тем лучше.

Всегда используйте последние на данный момент данные из Apple Pay. Допускайте,


что пользователи сохраняют информацию детальной и обновлённой, и не
полагайтесь на информацию, собранную в прошлом. Даже если вы ранее получили
от пользователей контактную, платёжную или информацию о доставке, извлеките
актуальную информацию из Apple Pay в процессе оформления заказа и оплаты. Не
заставляйте людей вводить какую-либо информацию в процессе оформления заказа
и оплаты, которую вы могли извлечь из Apple Pay.

Используйте Apple Pay для ускорения процесса покупки. Чтобы обеспечить покупку,
состоящую из одного продукта, позвольте пользователям нажать на кнопку Apple Pay
на странице продукта, чтобы отобразить окно оплаты и приступить к
непосредственному процессу оформления и оплаты. Пользователям нравится
преимущество покупки одного товара в вашем приложении без принятия
дополнительных шагов, чтобы добавить его в корзину. В ситуациях, когда множество
товаров в корзине будут доставлены одинаковым способом по одному адресу,
предоставьте процесс быстрого расчёта, при котором окно оплаты появляется как
только пользователи будут готовы произвести оплату.
Собирайте погашение или промокоды до того, как отобразить окно оплаты. Так как в
окне оплаты Apple Pay нет способа ввести код, удостоверьтесь, что получили все
коды перед отображением окна.

Если люди могут получить отдельные товары в корзине в разные места или с разной
скоростью, предоставьте эту информацию до того, как отобразите окно оплаты. В
таком редком случае вам нужно получить информацию о доставке перед тем, как
отобразить окно оплаты, потому что в окне оплаты нет опции выбрать различные
способы или адреса доставки. В этом общем случае, удостоверьтесь, что получили
способ доставки и адресную информацию внутри окна оплаты.

Отобразите подтверждение заказа или страницу благодарности. Чтобы обеспечить


непосредственный пользовательский опыт, после того, как платёж осуществлён,
используйте страницу подтверждения заказа для отображения деталей даты
доставки товара и способа проверки статуса заказа.

В случае необходимости, отметьте Apple Pay на странице подтверждения заказа. Хотя


упоминать Apple Pay на странице подтверждения заказа не является
необходимостью, если вы решили это сделать, используйте один из форматов:

 “Visa ••••1234 (Apple Pay)”

 “Paid with Apple Pay” (Оплачено через Apple Pay)

Исследовательские Приложения

Исследовательское приложение позволяет пользователям iOS принять участие в


научных исследованиях посредством удобного использования устройств iOS.
Предварительно спроектированные экраны и переходы, доступные в открытом
источнике проекта Apple ResearchKit, упрощают создание красивого
исследовательского приложения, которое индивидуализировано для вашего
изучения и доставляет удовольствие людям. Чтобы узнать, как использовать
ResearchKit для разработки исследовательского приложения для проведения вашего
исследования, см. researchkit.org.

ВАЖНО

Эти руководящие указания разработаны только в целях информации и не


представляют собой юридическую помощь. Вам следует связаться с адвокатом для
получения консультации в отношении разработки исследовательского приложения и
любого применимого закона.

Как правило, экраны исследовательских приложений ResearchKit и экраны


характерных приложений разделяются на группы, которые подстраиваются под три
главных принципа использования:

 Ознакомление

 Изучение конкретных областей

 Элементы управления

Следуйте руководящим указаниям каждой группы, которая содержит в себе каждый


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

Ознакомление

Ознакомительный опыт состоит из нескольких разделов, которые вводят


потенциальных участников в курс исследования и позволяют вам получить их
согласие. Участники, как правило, не пересматривают ознакомительных секций
после их завершения. Ознакомительный опыт включает в себя следующие разделы:

Вам следует представить разделы в ознакомительном опыте в таком порядке, как


показано здесь: введение, право на участие, согласие и (в случае необходимости)
разрешение на доступ к данным.

Создайте введение, которое информирует и призывает к действию. Раздел введения


должен помогать людям узнать больше о вашем исследовании и рассказать, как стать
учатсником. Лучше всего, когда раздел введения также даёт действующим
участникам быстрый способ войти и продолжить незавершённое исследование.
Как можно скорее определите право на участие. Представьте раздел права а участие
после раздела введения и перед разделом согласия (участникам не нужно видеть
раздел согласия, если они не допущены к исследованию). Удостоверьтесь, что
предоставляете только те критерии правомочности, которые необходимы для вашего
исследования. Используйте простой непосредственный язык для описания
требований и упростите для пользователей ввод информации.

Удостоверьтесь, что участники понимают исследование до того, как вы получите их


согласие. ResearchKit помогает вам сделать процесс согласия кратким и
доброжелательным, однако всё еще позволяя вам внести в согласие какие-либо
законодательные требования или требования, установленные Экспертным советом
организации или Экспертным советом по этике. (Если ваше приложение
подразумевает осуществление исследования на человеке, вам необходимо
удостовериться, что ваше приложение соответствует App Store Guidelines, включая
требования о согласии.) Как правило, раздел согласия:

 Объясняет принцип исследования

 Обеспечивает понимание исследования и ответственности пользователями

 Получает согласие участника

Превратите длинный документ согласия в удобные для понимания подразделы.


Каждый подраздел может охватывать один аспект исследования, такой как сбор
данных, использование данных, потенциальная польза, возможные риски, затраты
времени, способы прекращения исследования и так далее. Для каждого подраздела
используйте простой непосредственный язык для обеспечения обзора высокого
качества. В случае необходимости предоставьте более подробное объяснение
подразделов, которое участники могут прочитать, если нажмут кнопку Узнать
Больше. Участники должны быть способны увидеть содержимое согласия целиком до
того, как согласятся принять участие.
Если имеет смысл, предоставьте короткий тест, который определяет понимание
участников. Вы можете сделать это, если существует вероятность, что вам придётся
отвечать на одни и те же вопросы участников при получении личного согласия
участника.

Получите согласие участника и, в случае необходимости, некоторую контактную


информацию. После согласия присоединиться к исследованию, участники получают
диалоговое окно подтверждения с соответствующими экранами, в которых участники
предоставляют свою подпись и контактную информацию. Большинство
исследовательских приложений отправляют участникам на адрес электронной почты
PDF-версию согласия для отчётности.

Участники отвечают на сообщение для подтверждения своих намерений


присоединиться к исследованию

Участники могут предоставить подпись в процессе согласия


Получите разрешение, если вам необходим доступ к устройству участника или его
данным. Чётко объясните, зачем вашему исследовательскому приложению нужен
доступ к местоположению, приложению Здоровье или другим данным, и
удостоверьтесь, что избегаете запроса доступа к данным, которые не являются
существенно важными для вашего исследования. Также запросите разрешение на
отправку уведомлений на устройство участника, если ваше приложение этого
требует.

Подготовьте участников к предоставлению доступа к данным, таким как данные


приложения Здоровье
Позвольте участникам выбрать те данные, которыми они хотят с вами поделиться

Изучение конкретных областей


Для ввода информации пользователями, ваше исследование может использовать
опросы, активные задачи или комбинации того и другого. В зависимости от
структуры вашего исследования, участники могут взаимодействовать с каждым
разделом много раз или только один.

Создайте опросы, которые позволяют участникам оставаться сосредоточенными и


вовлечёнными. ResearchKit упрощает предоставление опросов, которые требуют
различных вариантов ответа, таких как правда или ложь, несколько вариантов
ответа, дата и время, подвижная шкала и неограниченный ввод текста. Когда вы
используете экраны ResearchKit для создания опроса, следуйте этим указаниям,
чтобы предоставить прекрасный пользовательский опыт:

 Сообщите участниками, на сколько вопросов им предстоит ответить и как


много времени потребуется на выполнение опроса.

 Используйте один экран на один вопрос.

 Демонстрируйте участникам прогресс прохождения опроса.

 Сохраняйте опрос настолько коротким, насколько возможно. Несколько


коротких опросов, как правило, эффективнее чем один длинный опрос.

 Для вопросов, требующих дополнительного объяснения, используйте


стандартный шрифт для вопроса и немного более мелкий шрифт для
пояснительного текста.

 Сообщите участникам о завершении опроса.

ResearchKit предоставляет большое количество индивидуализированных экранов,


которые вы можете использовать в своём опросе. Ниже приведены примеры
нескольких экранов опросов.
Сделайте активные задачи простыми для понимания. Активная задача требует от
участников вовлечённости в действие, такой как говорение в микрофон, нажатие
пальцами на экран, ходьба или выполнение теста на память. Следуйте этим
указаниям, чтобы вдохновить участников на выполнение активной задачи и дать им
прекрасный шанс на успех:

 Опишите, как выполнить задачу, используя простой и понятный язык, который


может понять каждый.

 Сообщите, должна ли задача быть выполнена за определённое время или при


определённых обстоятельствах.

 Удостоверьтесь, что участники могут сообщить о завершении выполнения


задачи.

Ниже приведено два примера активных задач, которые поддерживает ResearchKit.


Элементы Управления

ResearchKit предоставляет экран профиля, который даёт пользователям способ


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

Используйте профиль, чтобы помочь участникам управлять личными данными,


связанными с вашим исследованием. Экран профиля может позволить участникам
редактировать данные, которые могут меняться в течение курса исследования,
например, вес или привычки сна, и могут напоминать о грядущих задачах. Вы также
можете использовать профиль, чтобы дать участникам лёгкий способ покинуть
исследование и увидеть документ согласия и правила соблюдения
конфиденциальности приложения.
Используйте доску, чтобы мотивировать участников и демонстрировать прогресс.
Экран доски может создать эффект присутствия в комнате вместе с участниками и
вдохновить их продолжить. В случае необходимости для вашего исследования, вы
можете использовать доску, чтобы дать участникам широкий спектр обратной связи,
такой как ежедневный прогресс, еженедельная аттестация, результаты отдельных
задач и даже результаты, сравнивающие результаты участников с собранными
результатами других в исследовании.

Расширения Приложения

Расширения приложения увеличивают область действия вашего приложения, давая


пользователям доступ к узконаправленным частям его функциональных
возможностей, во время того, как они используют другие приложения. Например, во
время просмотра веб-сайтов в Safari, люди могут использовать расширение
"Поделиться", чтобы разместить изображение или статью на вашем информационном
ресурсе для общения и взаимодействия. Либо во время использования приложения
Фотографии, люди могут использовать ваше расширение Редактирования
Фотографий, чтобы применить фотофильтр. (В таких ситуациях Safari и Фотографии
называются приложениями хоста, потому что они дают пользователям доступ к
расширениям.)

Вы предоставляете расширение приложения внутри полнофункционального


приложения iOS, которое вы размещаете в App Store (приложение, содержащее
расширения, называется содержащим расширения). После установки расширения в
вашем содержащем приложении, люди могут использовать его для выполнения
быстрых задач во время использования других приложений. Например, во время
чтения о продукте в сообщении электронной почты, люди могут использовать ваше
расширение Действия, чтобы добавить товар в список покупок без выхода из Почты.

В Таблице 22-1 составлен список типов расширений приложений iOS, которые вы


можете создать.

Тип расширения приложения Люди используют это расширение, чтобы...

Получить быстрое обновление или выполнить


Виджет Сегодня быструю задачу в окне "Сегодня" Центра
Уведомлений

Разместить на веб-сайте или поделиться


Поделиться
содержимым с другими
Тип расширения приложения Люди используют это расширение, чтобы...

Управлять или видеть содержимое в контексте


Действие
другого приложения

Редактирование Редактировать фото или видео внутри


Фотографий приложения Фотографии

Получить доступ к хранилищу файлов и


Проводник Документов
управлять им

Индивидуализированная Заменить системную клавиатуру iOS другой


Клавиатура индивидуализированной клавиатурой

Таблица 22-1 Типы расширений приложений

Эти указания применимы к расширениям приложений всех типов; для управления


особыми расширениями приложений определённого типа, см. разделы ниже. (Чтобы
узнать, как разрабатывать, устранять неполадки и распространить расширение, см.
App Extension Programming Guide.)

Включите одну задачу. Расширение не является мини-версией вашего приложения.


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

Сохраняйте взаимодействие пользователя ограниченным и чётко организованным.


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

Включите название вашего содержащего приложения в название каждого


расширения, которое оно предоставляет. Хотя каждое из множества расширений в
одном содержащем приложении должно иметь своё название, вам нужно
удостовериться, что пользователи понимают связь между вашими расширениями и
приложением. Люди сталкиваются с расширениями в множестве различных
контекстов и они вряд ли будут доверять расширению, если оно им не знакомо.
В большинстве случаев используйте иконку содержащего приложения. Отображение
знакомой иконки — это ещё один способ, при котором расширение может получить
доверие пользователей. Имейте ввиду, что в случае с расширением Действие, вы
создаёте монохромную версию иконки содержащего приложения (для получения
деталей, см. Расширения Поделиться и Действие).

ВАЖНО

Так же как и со всеми иконками и изображениями, которые вы создаёте, не


повторяйте иконки и изображения iOS и не создавайте изображения продукции и
дизайна Apple.

Избегайте отображения модального окна поверх расширения. Многие расширения


отображаются внутри модального окна по умолчанию, и лучше всего избегать
наложения модальных окон. Хотя существуют случаи, когда пользователи могут
видеть предупреждение поверх расширения, избегайте создания такой технологии
расширения, которая требует наличия модального окна.

Виджет Сегодня

Люди видят виджеты Сегодня в области Сегодня в Центре Уведомлений. Так как
люди формируют область Сегодня так, что она отображает самую важную для них
информацию, создайте ваш виджет с целью получить пространство среди самых
важных для пользователя элементов.
Создайте внешний вид, который выглядит "как дома" в Центре Уведомлений. Когда
вы используете стандартные поля и фон, предоставленные Центром Уведомлений,
ваш виджет Сегодня предоставляет пользователям соответствующий внешний вид.
Для наилучших результатов, сосредоточьтесь на вовлечение вашего содержимого, а
не фона или других материалов. В частности, избегайте использования однотонного
фона.

ПРИМЕЧАНИЕ

iOS автоматически отображает иконку вашего приложения и заголовок наверху


вашего индивидуального содержимого виджета (иконка расположена в основном
поле).

Выравнивайте содержимое по заголовку виджета. Когда содержимое вашего виджета


выровнено с заголовком, люди легко могут просмотреть вид Сегодня при помощи
того виджета, который они хотят. Уважайте поля в окне Сегодня и ограничивайте
содержимое в соответствии с областью содержимого виджета, показанной здесь.
Как правило, для отображения текста используйте системный шрифт в белом цвете.
Белый текст выглядит хорошо на стандартном фоне Центра Уведомления. Для
вторичного текста используйте предоставленный системой красочный внешний вид
(чтобы узнать больше об этом внешнем виде, см. notificationCenterVibrancyEffect).

Предоставьте использование Центра Уведомлений. Люди заходят в Центр


Уведомлений, чтобы получить быстрые обновления или выполнить очень простую
задачу, так что лучше всего, когда виджет Сегодня отображает правильное
количество информации и ограничивает взаимодействие. В особенности:

 Избегайте того, чтобы пользователи прокручивали или вертикально


перемещали окно, чтобы увидеть всю информацию в виджете Сегодня. Виджет
может растягиваться вертикально, чтобы показать больше информации, но не
нужно, чтобы высота виджета превышала высоту Центра Уведомлений, потому
что это создаёт помехи для прокрутки для просмотра других виджетов
Сегодня.

 Избегайте осуществления горизонтального смахивания или перетаскивания,


потому что это создаёт помехи для навигации между областями Центра
Уведомлений.
 Насколько возможно, позвольте пользователям выполнить задачу или открыть
ваше приложение всего одним нажатием (имейте ввиду, что внутри Центра
Уведомлений клавиатура недоступна).

 Оптимизируйте эффективность, чтобы люди немедленно получали полезную


информацию. Хорошей идеей является хранить информацию в определённом
месте, чтобы вы могли отобразить недавнюю информацию, когда происходит
обновление. Люди проводят очень мало времени в виджете Сегодня, и iOS
может ограничить виджеты Сегодня, которые не используют память разумно.

В случае необходимости, позвольте людям производить нажатие в виджете Сегодня,


чтобы открыть ваше приложение. Так как ваш виджет Сегодня предоставляет
узконаправленное использование, переадресация людей в ваше приложение для
получения большей информации или функциональных возможностей может стать
хорошим приёмом. Предоставлять кнопку "Открыть Приложение" — не очень
хорошая идея, так что единственным решением является сделать весь виджет
Сегодня возможным для нажатий. Либо вы можете позволить пользователям
нажимать на соответствующий объект пользовательского интерфейса внутри
виджета, чтобы открыть то окно вашего приложения, которое сфокусировано на этом
объекте. Например, виджет Календарь показывает сегодняшние мероприятия; если
пользователи хотят получить больше информации о мероприятии, они могут нажать
на него в виджете, чтобы увидеть приложение Календарь.

ПРИМЕЧАНИЕ

Предоставление пользователям способа открыть ваше приложение из виджета


Сегодня может хорошо сработать, но важно, чтобы вы также предоставили полезную,
уместную информацию в виджете. Пользователи не оценят виджета Сегодня,
единственной функцией которого является запуск приложения.

Если необходимо, позвольте людям знать, нужно ли им зарегистрироваться, чтобы


получить полезную информацию в вашем виджете Сегодня. Если виджет Сегодня
требует от людей регистрации, чтобы просмотреть информацию, отобразите
сообщение, способствующее их регистрации, и объясняющее, какое содержимое они
увидят, если зарегистрируются. Например, если ваш виджет Сегодня показывает
предстоящие резервирования, когда пользователи регистрируются, вы можете
попросить людей "Войдите в Моё Приложение, чтобы увидеть предстоящие
резервирования."
Не создавайте виджет Сегодня, который запускает какие-либо приложения, кроме
вашего. Виджет Сегодня, который повторяет функции Начального Экрана iOS, не
предоставляет для ваших пользователей полезной информации.

Расширения Действие и Поделиться

Люди получают доступ к расширениям Поделиться и Действие посредством нажатия


кнопки Действие в приложении. В контроллере окна действия, отображаемом
посредством нажатия кнопки Действие, расширения Действия перечислены в нижнем
ряду, а расширения Поделиться расположены над ними. Люди могут использовать
кнопку Ещё для управления расширениями Поделиться и Действие, которая
отображена в контроллере окна действия, показанном здесь.

Расширение Поделиться или Действие обычно воспринимается как ввод содержимого


в текущий контекст пользователя. Например, во время чтения статьи в Safari,
пользователь может нажать кнопку Действие и использовать расширение Поделиться,
чтобы разместить статью на веб-сайте, или использовать расширение Действие,
чтобы увидеть перевод статьи.

ПРИМЕЧАНИЕ
В контроллере окна действия iOS отображает только расширения Действия, которые
подходят к текущему типу контекста. Например, когда текущий контекст
пользователя — это видео, iOS не отображает расширения Действия, которые
подходят только для текста.

Насколько возможно, используйте системный пользовательский интерфейс в


расширении Поделиться. Системный регулирующий контроллер окна даёт
пользователям соответствующий опыт использования и автоматически поддерживает
общие задачи, такие как предпросмотр и проверка стандартных элементов,
синхронизация содержимого и отображение анимации, а также компоновка
расположения. Чтобы узнать больше об использовании системного регулирующего
контроллера окна, см. Share в App Extension Programming Guide.

Рассмотрите отображение прогресса длинной загрузки в расширении Поделиться


содержащего приложения. Люди ожидают сразу же вернуться к предыдущему
контексту после нажатия на кнопку Поделиться или Разместить, даже когда
используемое содержимое большого размера. Вам нужно обеспечить доступность
информации о ходе работ, но люди не хотят получать уведомления каждый раз,
когда загрузка завершена, и способа программного перезапуска расширения не
существует. В такой ситуации отображение хода загрузки в содержащем
приложении, которое может выполнять задачу на заднем фоне и отправлять
уведомления, если что-то пойдёт не так, может хорошо сработать.

Используйте монохромную версию иконки приложения для расширения Действия.


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

Если вы предоставите несколько расширений Действия в вашем содержащем


приложении, создание группы иконок для них может стать хорошей идеей.
Удостоверьтесь, что каждая иконка группы выглядит соответствующим иконке
содержащего приложения образом.

Расширения Редактирование Фотографий

Люди могут использовать Редактирование фотографий, когда просматривают фото


или видео в приложении Фотографии. Как правило, расширение Редактирования
Фотографий помогает пользователю применить фильтр или внести другие изменения
в фото или видео. После того, как пользователь подтверждает изменение,
отредактированное содержимое становится доступным в Фотографиях.

Приложение Фотографии предоставляет модальное окно, которое отображает


индивидуализированный пользовательский интерфейс вашего расширения
Редактирования Фотографий. Это приложение также может отображать окно
подтверждения, когда пользователь выбирает Отменить после редактирования фото
или видео (вы ответственны за осуществление этой функции в коде).

Избегайте использования навигационной панели в вашем расширении


Редактирования Фотографий. Как вы можете увидеть, модальное окно, которое
окружает окно расширения, уже включает в себя навигационную панель. Добавление
ещё одной навигационной панели заберёт пространство вашего пользовательского
интерфейса и будет доставлять неудобства пользователям. (По умолчанию,
Фотографии отображают ваше окно в полную высоту экрана, так что ваше
содержимое будет появляться под встроенной навигационной панелью.)

Если необходимо, предоставьте пользователям предпросмотр изменений. Насколько


возможно, позвольте пользователям увидеть результат их работы до того, как они
закроют расширение и вернутся к Фотографиям.
Расширение Проводник Документов

Расширение Проводник Документов помогает пользователям получить доступ к


документам, которыми ваше приложение управляет из большого количества других
приложений. В приложении хоста document picker view controller отображает
пользовательский интерфейс, который обеспечивает ваше расширение (чтобы узнать
больше о document picker view controller, см. UIDocumentPickerViewController Class
Reference).

ПРИМЕЧАНИЕ

Расширение Проводник Документов может состоять из двух отдельных частей:


расширение Document Picker View Controller и расширение Проводник Файлов.
Расширение Document Picker View Controller содержит ваш индивидуализированный
пользовательский интерфейс. Расширение Проводник Файлов осуществляет доступ к
файлам. Для упрощения, этот раздел использует термин расширение Проводник
Документов, чтобы обратить внимание на пользовательский интерфейс и опыт,
предоставленный частью расширения Document Picker View Controller.

Избегайте использования навигационной панели в вашем расширении Проводник


Документов. iOS отображает индивидуализированный пользовательский интерфейс
вашего расширения внутри интерфейса document picker view controller, основанного
на навигационной панели. Отображение второй навигационной панели внизу
встроенной панели покажется неудобным для пользователей и заберёт пространство
вашего содержимого. (По умолчанию, document picker view controller отображает
ваше окно в полную высоту экрана, так что ваше содержимое появляется под
встроенной навигационной панелью)
Индивидуализированная Клавиатура

Люди используют расширение клавиатуры, чтобы заменить клавиатуру iOS другой


клавиатурой во всей системе. После применения расширения клавиатуры, люди
получают индивидуализированную клавиатуру, когда вводят любой текст в любых
областях, где возможен ввод текста, за исключением защищённых областей ввода
текста (таких как поле пароля) и областей раскладок телефона (таких как поле ввода
цифр в Контактах).

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


Людям очень знакома клавиатура iOS, и они ожидают похожего опыта в вашей
клавиатуре.
Если необходимо, встройте в ваше содержащее приложение обучение. При
необходимости, используйте содержащее приложение вашей
индивидуализированной клавиатуры, чтобы предоставить пользователям инструкции
по использованию её использованию. Не помещайте эту информацию
непосредственно в клавиатуру, потому что это может запутать людей, когда они
попытаются ей воспользоваться.

HomeKit

HomeKit упрощает для людей использование приложений автоматизации дома на


устройствах iOS, чтобы управлять соответствующим оборудованием в домах,
независимо от производителя оборудования. Лучшие приложения для автоматизации
домов объединены с HomeKit и iOS, чтобы помочь пользователям:

 Обустроить дома, комнаты и зоны

 Добавить, найти или отключить оборудование, такое как электрическая


лампочка или термостат

 Определить функции, которые применяются для совокупности нескольких


видов оборудования

 Определить пользователей
 Использовать Siri для управления своими домами

Чтобы узнать, как использовать HomeKit в вашем приложении, читайте HomeKit


Developer Guide. Эти указания могут помочь вам в создании приложения
автоматизации домов, которое будет простым и приятным в использовании.

Не думайте, что ваше оборудование является первым в опыте пользователя. Ваше


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

Упростите добавление нового оборудования. Не заставляйте пользователей


создавать учётную запись до того, как они добавят оборудование. Лучше всего, когда
ваше приложение автоматически находит новое оборудование и отображает их в
пользовательском интерфейсе на видном месте. Удостоверьтесь, что отображаете
достаточно информации о каждом оборудовании, чтобы пользователи легко могли
обнаружить его.

Помогите пользователям определить то оборудование, которое они устанавливают.


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

Предоставьте пользователям разные способы поиска оборудования. Время суток,


время года, а также текущее местоположение пользователя могут повлиять на то,
какое оборудование будет наиболее важным в данный момент, так что ваше
приложение должно предоставлять способы поиска оборудования по типу, названию
или местоположению в доме.

Предоставьте наборы операций, основанные на установленном в доме


оборудовании. Набор операций позволяет пользователям определить ситуацию, в
которой несколько единиц оборудования должны работать особым образом.
Например, операция "отсутствие" может снизить температуру в доме, выключить свет
и закрыть все двери. Ваше приложение может предложить предопределённые
наборы операций или позволить пользователям создать свои собственные. Если
пользователи создают свои собственные наборы операций, чаще самым лучшим
является позволить пользователям выбрать из того оборудования, которое вы
предлагаете, основанного на выбранных комнатах или зонах.
Используйте дружественный диалоговый язык, чтобы сделать ваше приложение
доступным и простым в использовании. Автоматизация дома может пугать
пользователей. Избегайте использования акронимов или технической терминологии,
которую они могут не понять. В частности, HomeKit является техническим термином,
относящимся к программному интерфейсу приложения, так что его не следует
использовать в вашем приложении.

ПРИМЕЧАНИЕ

Если вы являетесь обладателем лицензии MFi, посетите портал MFi для указаний
касательно названий и передачи сообщений для комплектования оборудования.

Связь с Siri. Siri упрощает осуществление сложных операций посредством одной


инструкции. Siri распознаёт названия наборов операций, домов, комнат и зон и
может понимать высказывания, например, “Siri, закрой переднюю дверь,” “Siri,
выключи свет наверху” и “Siri, сделай температуру в медиа-зале выше.” Следующие
указания могут помочь вам в предоставлении великолепного пользовательского
опыта при использовании Siri для управления оборудованием.

 Используйте название услуги, а не название оборудования, чтобы Siri могла её


распознать. Оборудование может предоставлять множество услуг, например,
потолочный вентилятор, который может освещать и вентилировать, так что
важно помочь пользователям различать их. Для наилучших результатов,
позвольте пользователям выбирать из ограниченного списка названий, который
не включает в себя названия компаний или номера моделей, и удостоверьтесь,
что позволяете пользователям редактировать названия в будущем. Названия,
которые вы предлагаете, должны быть стандартными, понятными словами или
фразами, которые описывают услугу, и выборочно включать в себя
местоположение в доме, такое как "лампа в гостиной" или "дверь гаража." Вы
также можете позволить пользователям определить тип услуги для розеток и
выключателей, чтобы обобщённые команды типа "Siri, выключи свет" могли
управлять всеми лампами, светильниками и другим световым оборудованием.

 Дайте пользователям знать, как использовать Siri для управления набором


операций в то время, когда они устанавливают его. Например, в момент
подтверждения того, что набор операций "кинофильм" установлен, также
отобразите предложенный язык, при помощи которого пользователь может
обращаться к Siri. Например, "Вы можете использовать Siri, чтобы активировать
этот набор операций посредством команды "Siri, включи в доме режим
просмотра кинофильма." Имейте ввиду, что пользователи также могут
обращаться к Siri для активации набора операций просто посредством
произнесения названия этого набора. Siri распознаёт предопределённые и
установленные пользователем наборы операций, в которых есть хотя бы одна
функция.

Помогите пользователям установить триггеры. В iOS 9, HomeKit поддерживает


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

Многозадачность

Многозадачность позволяет людям видеть более одного приложения на экране (на


подходящих моделях iPad) и быстро переключаться среди недавно использующихся
приложений. В iOS 9 люди могут использовать многозадачный пользовательский
интерфейс (показан ниже), чтобы выбрать недавно использовавшееся приложение.
Успешность использования многозадачной среды осуществляется путем достижения
гармоничного сосуществования с другими приложениями на устройстве. На высоком
уровне это означает, что все приложения должны:

 Тщательно регулировать использование ресурса, чтобы избежать чрезмерной


нагрузки на центральный процессор, память, пространство экрана и другие
ресурсы

 Изящно управлять прерыванием работы и аудио потоками других приложений

 Останавливать и перезапускать (то есть переходить к приложению в/из


фонового режима) быстро и плавно

 Корректно продолжать работать в свернутом состоянии

Следующие точные рекомендации помогут вашему приложению преуспеть в


многозадачной среде, которая сфокусирована на переключении приложений. Для
получения большей информации о работе многозадачной среды, доступной на
подходящих моделях iPad, см. Adopting Multitasking Enhancements on iPad.

Будьте готовы к сбоям и возобновлениям работы. Многозадачность увеличивает


вероятность того, что фоновое приложение прервет работу вашего приложения.
Другие функции, такие как наличие рекламы и быстрое переключение приложений,
могут стать причиной более частых сбоев. Чем быстрее и точнее вы сможете
сохранить текущее состояние вашего приложения, тем быстрее пользователи смогут
возобновить или продолжить работу с момента возникновения сбоя. Чтобы
предоставить пользователям опыт плавного возобновления работы, воспользуйтесь
преимуществами сохранения состояния и функции возобновления UIKit (для большей
информации см. Preserving Your App’s Visual Appearance Across Launches).

Убедитесь, что ваш пользовательский интерфейс может справиться с удвоенной


строкой статусов. Удвоенная строка статусов появляется во время таких событий как
телефонные звонки, запись звука, а также режим модема. В неподготовленном
приложении дополнительная высота этой панели может вызвать проблемы
расположения. Например, пользовательский интерфейс может сворачиваться или
закрываться. В многозадачной среде особенно важно быть готовым справиться с
двойной строкой статусов, поскольку есть вероятность того, что появится больше
приложений, вызывающих её появление.

Будьте готовы приостановить деятельность, которая требует внимания пользователей


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

Убедитесь, что аудио функционирует должным образом. Многозадачность делает


более вероятной возникновение другой медиа-активности во время работы вашего
приложения. Она также повышает вероятность того, что для устранения прерываний
придётся приостановить аудио, а затем возобновить. Для получения точных
рекомендаций, которые помогут вам убедиться, что аудио оправдывает ожидания
пользователей и правильно сосуществует с другими аудио на устройстве, см. раздел
Звук.

Экономично используйте локальные уведомлений. Приложение может организовать


отправку локальных уведомлений в определенные моменты: если приложение
приостанавливается, работает в фоновом режиме, или не работает вообще. Для
наилучшего пользовательского опыта, избегайте утомления пользователей слишком
большим количеством уведомлений, а также следуйте указаниям по созданию
содержания уведомлений, описанным в разделе Уведомления.
При необходимости завершайте инициированные пользователем задачи в фоновом
режиме. Когда пользователи инициируют задачу, они обычно ожидают завершения
её работы, даже если они выходят из вашего приложения. Если ваше приложение
находится в процессе выполнения инициированной пользователем задачи, которая
не требует дополнительного взаимодействия с пользователем, вы должны завершить
её в фоновом режиме перед отключением.

Уведомления

Уведомления предоставляют людям информацию и функциональные возможности,


важные в данный момент. Люди могут получать уведомления в различном контексте,
например, на экране блокировки, во время использования приложений и во время
посещения Центра Уведомлений.

В Центре Уведомлений присутствует два окна: Сегодня и Уведомления.

Окно Сегодня отображает редактируемый список виджетов. Виджет Сегодня — это


расширение приложения, которое отображает небольшое количество своевременной,
особенно ценной информации или функциональных возможностей, которые
предоставлены важным для пользователей приложением. Например, виджет
Календарь отображает только сегодняшние мероприятия. Нажатие на мероприятие в
виджете Календарь открывает это мероприятие в приложении Календарь, где
пользователи могут редактировать его и организовывать другие мероприятия. Чтобы
узнать больше о создании виджета Сегодня, см. Виджеты Сегодня.

Окно Уведомлений отображает недавние элементы уведомлений из различных


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

Приложения iOS могут использовать уведомления, чтобы дать людям узнать об


интересных вещах, таких как:

 Получение сообщения

 Напоминание о событии

 Наличие доступных обновлений

 Статус каких-либо изменений

В iOS 8 и позднее приложения могут определять действия, которые пользователи


могут совершать внутри уведомления. Например, уведомление от приложения списка
текущих дел может позволить пользователям отметить то, что они сделали без
обязательного запуска приложения.
iOS определяет два типа уведомлений.

 Локальное уведомление запланировано приложением и доставлено iOS на это


же устройство, независимо от того, работает ли приложение в фоновом
режиме. Например, приложения Календарь или Список Дел могут назначать
локальные уведомления, чтобы предупредить пользователей о предстоящей
встрече или событии.

 Дистанционное уведомление (также называется push-уведомление)


отправляется удалённым сервером приложения сервису Apple Push Notification,
который отправляет уведомления на все устройства, на которых установлено
приложение. Например, игра, в которую пользователь может играть против
удаленных противников, может обновить всех игроков вместе с последним
движением.

ПРИМЕЧАНИЕ

Расширение приложения может запросить, чтобы дистанционное уведомление было


отправлено содержащему приложению. В такой ситуации, содержащее приложение,
как правило, запускается на заднем фоне, чтобы управлять уведомлением. Чтобы
узнать больше о расширениях приложения, см. Расширения Приложений.

Если вы получаете локальные или дистанционные уведомления, когда ваше


приложение работает на переднем плане, вы ответственны за передачу информации
вашим пользователям способом, применимым к приложению.

Чтобы убедиться, что пользователи могут индивидуализировать свою работу с


уведомлениями, вам необходимо поддерживать как можно больше типов
уведомлений, приведённых ниже:

 Баннеры

 Предупреждения

 Наклейки

 Звук

ПРИМЕЧАНИЕ

На iOS 8 и позднее вы должны регистрировать типы уведомлений, которые вы хотите


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

Баннер — это небольшое полупрозрачное окно, которое появляется на экране и


исчезает через несколько секунд. Пользователи также могут видеть версию баннера
на заблокированном экране и в окне Уведомления Центра Уведомлений. В баннере
iOS отображает ваше уведомление и уменьшенную версию иконки приложения (чтобы
узнать больше о маленьких иконках приложения, см. Иконка Приложения).
Пользователи могут нажать на баннер, чтобы убрать его и переключиться к
приложению, которое прислало уведомление.

В дополнение к операции по умолчанию, которую люди могут совершить


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

Уведомление предупреждение — это стандартное окно предупреждений, которое


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

Наклейка представляет собой маленький красный овал, который отображает


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

Индивидуализированный или предоставляемый системой звук может сопровождать


любой из трех описанных выше вариантов оповещения.

Хорошо подумайте перед тем, как обеспечить деструктивное действие в


уведомлении. Вам нужно быть уверенными, что у пользователей достаточно
контекста, чтобы избежать непредвиденных последствий. Чтобы помочь
пользователям отличить действие, которое вы определяете как деструктивное, iOS
отображает его в красном цвете. В некоторых случаях хорошей идеей является
потребовать подтверждение пользователей до того, как приложение выполнит
деструктивное действие. Например, если вы обеспечиваете деструктивное действие в
баннере, который появляется на заблокированном экране, вам нужно удостовериться,
что только владелец устройства может предпринять это действие (вы ответственны за
осуществление этого требования в коде).

Обеспечьте индивидуализированный заголовок для каждой кнопки действия.


Создайте очень короткий заголовок, который ясно описывает происходящее
действие. Например, игра может использовать заголовок Играть, чтобы определить,
что нажатие на кнопку открывает приложение в том месте, где пользователь может
сделать свой ход. Удостоверьтесь, что заголовок:

 Выделен заглавными буквами

 Довольно короткий, чтобы вместить кнопку без усечения (удостоверьтесь, что


также проверили длину локализованных заголовков)

Не отправляйте несколько уведомлений об одном и том же событии. Пользователи


могут посещать пункты уведомлений по выбору; элементы не исчезают, пока
пользователи не устранят их каким-либо образом. Если вы отправляете несколько
уведомлений об одном и том же событии, вы заполняете список Центра
Уведомлений, и пользователи, вероятно, отключат уведомления вашего приложения.

Не включайте название вашего приложения в сообщение уведомления. Ваше


уникальное сообщение отображается в предупреждениях и баннерах, а также в окне
Уведомления Центра Уведомлений. Вам не следует включать название вашего
приложения в уникальное сообщение, поскольку iOS автоматически отображает
название рядом с ним.

Для наибольшей пользы, сообщение локального или дистанционного уведомления


должно:

 Фокусироваться на информации, а не на действиях пользователя. Избегайте


сообщений, в которых говорится, какую кнопку нажать или как открыть ваше
приложение.

 Будьте достаточно лаконичными, чтобы отобразить сообщение на одной или


двух строках. Длинные сообщения являются трудными для быстрого чтения
пользователями, и они могут заставить прокручивать предупреждения.

 Используйте соответствующие предложению написание и знаки препинания.


По возможности, пользуйтесь полными предложениями.

ПРИМЕЧАНИЕ

При необходимости, iOS сокращает ваше сообщение, чтобы оно поместилось в


каждое уведомление. Для наилучших результатов, вам не следует сокращать ваше
сообщение.

Сохраняйте содержимое наклеек актуальным. Особенно важно обновлять наклейки


сразу после того, как пользователи получили новую информацию, чтобы они не
думали, что пришли дополнительные уведомления. Имейте ввиду, что настройка
содержимого наклеек в ноль также удаляет соответствующие элементы уведомления
из Центра Уведомлений.

ВАЖНО

Не используйте наклейки в каких-либо целях, кроме уведомлений. Помните, что


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

Предоставьте звук, который пользователи могут выбрать, чтобы слышать, когда


приходит новое уведомление. Звук может привлечь внимание пользователей, когда
они не смотрят на экран устройства. Например, приложение Календарь может
проигрывать звук вместе с предупреждением, которое напоминает людям о
надвигающемся событии. Или приложение управления общими задачами может
проигрывать звук вместе с обновлением наклеек, чтобы уведомить о завершённом
коллегой задании.

Вы можете установить индивидуальный звук или использовать встроенный звук


предупреждений. Если вы создаёте индивидуальный звук, удостоверьтесь, что он
короткий, характерный и качественный. (Для получения большей информации о
технических требованиях для этого звука, см. Preparing Custom Alert Sounds.) Имейте
ввиду, что вы не можете вызвать программную вибрацию устройства при доставке
уведомления, потому что пользователь определяет, будут предупреждения
сопровождаться вибрацией или нет.

Социальные Сети

Люди ожидают, что будут иметь доступ к своим учётным записям социальных сетей
независимо от их текущего контекста. iOS упрощает внедрение взаимодействия с
социальными сетями в ваше приложение такими способами, который оценят люди.
ПРИМЕЧАНИЕ

Когда пользователи нажимают кнопку Действие, они получают контроллер окна


действия (activity view controller), один из которых показан здесь. Чтобы узнать
больше об этом контроллере окна, см. Контроллер Окна Действия (activity view
controller).

В строке посередине контроллера окна действия представлены расширения


приложения Поделиться, установленные пользователем посредством системных
служб обмена. Чтобы узнать больше о создании расширения Поделиться, см.
Расширения Поделиться и Действие.

Рассмотрите возможность предоставить пользователям удобный способ размещать


пост внутри вашего приложения. Пользователи, вероятно, установят расширения
Поделиться, которые упростят размещение содержимого откуда угодно, но вы также
можете использовать системный регулирующий контроллер окна (compose view
controller), чтобы предоставить пользователям окно, в котором они могут
редактировать пост. Необязательно, но вы можете предварительно заполнить
созданное окно содержимым до того, как предоставите его пользователям для
редактирования (после того, как вы предоставите окно пользователям, только они
смогут редактировать содержимое). Чтобы узнать больше о программировании
интерфейса платформы Социальных Сетей, включая тип SLComposeViewController,
см. Social Framework Reference.

Когда возможно, избегайте запроса пользователей о входе в учётную запись


социальной сети. Платформа Социальных сетей работает с платформой Учётных
записей, чтобы обеспечить модель одного входа, так что вы можете получить
разрешение на доступ к учётной записи пользователя без запроса о повторной
аутентификации. Если пользователь ещё не вошёл в учётную запись, вы можете
предоставить пользовательский интерфейс, который позволит им это сделать.

iCloud

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

Для того, чтобы обеспечить такой пользовательский опыт, вполне вероятно, что вам
придется пересмотреть способы хранения, доступа и предоставления информации
(особенно, созданного пользователями содержимого) в вашем приложении. Чтобы
узнать, как установить iCloud в ваше приложение, см. iCloud Design Guide.

Одним из основополагающих аспектов работы пользователей с хранилищем iCloud


является прозрачность: В идеале, пользователям не нужно знать, где хранится их
содержимое, и им редко надо думать о том, какую версию содержимого они
просматривают в данный момент. Следующие указания помогут вам в
предоставлении пользователям опыта использования iCloud, которого они ожидают.

В надлежащем случае упростите использование iCloud в вашем приложении.


Пользователи на iOS устройствах заходят в учётную запись iCloud в настройках
iCloud, и в большинстве случаев, они ожидают, что приложения автоматически будут
работать с iCloud. Но если вы думаете, что пользователи возможно захотят выбрать,
использовать ли iCloud с вашим приложением, вы можете предоставить простую
опцию, которую они могут выбрать, когда впервые откроют ваше приложение. В
большинстве случаев, эта опция должна предоставлять выбор между использованием
iCloud со всем содержимым, к которому пользователи получают доступ в вашем
приложении, или не со всем.

Уважайте пространство пользователя в iCloud. Важно помнить, что iCloud


представляет собой невозобновляемый ресурс, за который пользователи платят. Вы
должны использовать iCloud для хранения информации, которую создают и
понимают пользователи. Избегайте использования iCloud для хранения ресурсов
приложения или содержимого, которое вы можете восстановить. Также имейте
ввиду, что когда учётная запись пользователя активна, iCloud автоматически создаёт
резервную копию содержимого папки документов вашего приложения. Чтобы
избежать чрезмерного использования пространства пользователя, лучше всего быть
разборчивым относительно содержимого, которое вы помещаете в папку
документов.

Старайтесь не спрашивать пользователей, какие документы сохранить в iCloud. Как


правило, люди ожидают, что всё важное для них содержимое будет доступно через
iCloud. Большинству пользователей не нужно управлять хранилищем личных
документов, так что вы не должны допускать, чтобы ваше приложение осуществляло
этот опыт. Чтобы обеспечить хороший пользовательский опыт, возможно, придется
перестроить путь, с помощью которого ваше приложение обрабатывает и
предоставляет содержимое, чтобы вы могли выполнять для пользователя больше
задач по управлению файлами.

Определите типы информации для хранилища в iCloud. В дополнение к хранению


документов, созданных пользователем, и другого содержимого, вы также можете
хранить небольшое количество данных, например, текущий статус пользователя в
вашем приложении или его предпочтения. Для хранения такого типа информации,
используйте основное хранилище iCloud. Например, если люди используют ваше
приложения для чтения журнала, вы можете использовать основное хранилище
iCloud для хранения последней страницы, которую они просмотрели, чтобы, когда
они снова откроют издание на другом устройстве, они смогли продолжить читать
там, где прервались.

Если вы используете основное хранилище iCloud для хранения предпочтений,


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

Удостоверьтесь, что ваше приложение работает должным образом, когда iCloud


недоступно. Например, если пользователи выходят из учётной записи iCloud,
отключают использование iCloud с вашим приложением или включают Авиарежим,
iCloud становится недоступным. В таких ситуациях пользователи совершили
действие, которое отключило доступ к iCloud, так что вашему приложению не нужно
об этом сообщать. Однако, показать пользователям, что изменения, которые они
произвели, не будут видимы на других устройствах до тех пор, пока они не
восстановят доступ к iCloud, может быть разумным.

Старайтесь не предоставлять пользователям опцию создания "локального"


документа. Независимо от того, поддерживаете ли вы iCloud в своём приложении,
вам не следует заставлять пользователей думать в рамках файловой системы
конкретного устройства. Вместо этого, вам нужно, чтобы пользователи
сфокусировались на повсеместной доступности своего содержимого через iCloud.

При необходимости обновляйте содержимое автоматически. Лучше всего, когда


пользователям не нужно ничего предпринимать, чтобы удостовериться, что они
получают доступ к самому актуальному содержимому в вашем приложении. Тем не
менее, необходимо сбалансировать это знание с уважением пространства
пользовательского устройства и ограничением пропускной способности. Если ваши
пользователи работают с очень большими документами, возможно, будет логичным
предоставить им контроль над загрузкой обновлений из iCloud. Если вам нужно
сделать это, спроектируйте способ идентификации более поздних версий документа,
доступных для скачивания. Когда пользователь выбирает обновление документа,
необходимо обеспечить незаметную обратную связь, если загрузка занимает более
нескольких секунд.
Предупреждайте пользователей о последствиях удаления документа. Когда
пользователь удаляет документ в приложении, которое использует хранилище
iCloud, этот документ будет удален из пользовательского аккаунта iCloud и со всех
остальных устройств. Уместно отобразить предупреждение, которое описывает этот
результат, и получить подтверждение перед удалением.

Как можно скорее сообщайте пользователям о конфликтах, но только в случае


необходимости. Используя программный интерфейс iCloud, вы должны быть
способны разрешить большинство конфликтов между разными версиями документа
без вовлечения пользователя. В случаях, когда это невозможно, удостоверьтесь, что
распознаёте конфликт как можно скорее, чтобы суметь помочь пользователям
избежать потери времени на неправильную версию содержимого. Необходимо
разработать ненавязчивый способ, чтобы показать пользователю наличие конфликта.
Затем упростите для пользователей процесс определения различий между версиями
и принятия решения.

Не забудьте включить содержимое пользователя iCloud в поиск. Пользователи с


аккаунтами iCloud склонны полагать, что их содержимое будет везде доступно, и они
ожидают, что результаты поиска будут это учитывать. Если выше приложение
позволяет людям искать содержимое, удостоверьтесь, что используете
соответствующий программный интерфейс приложения для связи поиска с учётной
записью iCloud.

HealthKit

В iOS 8 и позднее приложения, созданные при помощи HealthKit, могут использовать


данные приложения Здоровье, чтобы предоставить более мощные и доступные
оздоровительные и фитнес услуги. С разрешения пользователя, приложения могут
использовать HealthKit и для чтения, и для написания данных из приложения
Здоровье, главного местоположения хранилища данных пользователя, связанных со
здоровьем.

Например, пользователи могут предоставить приложению о питании доступ к


данным веса и активности, которые они хранят в приложении Здоровье, чтобы
приложение о питании могло рекомендовать ежедневное количество потребления
калорий для достижения определённой цели. Приложение о питании также может
использовать HealthKit для обновления количества потреблённых калорий в
приложении Здоровье, чтобы пользователям легче было следить за прогрессом.
Чтобы узнать, как встроить HealthKit в ваше приложение, см. HealthKit Framework
Reference.

Изложенные ниже указания помогут вам в создании приложения о фитнесе и


здоровье, которое будет вызывать доверие пользователей и доставлять им
удовольствие.

Запросите доступ к данным здоровья, только если у вас есть уважительная причина.
HealthKit создана для использования в приложениях, основной целью которых
является предоставление услуг оздоровления и фитнеса. Если приложение
запрашивает доступ к несвязанной информации о здоровье, пользователи с меньшей
вероятностью доверят приложению свои личные данные. Так что вашей работой
является удостовериться, что пользователи понимают причины, по которым ваше
приложение запрашивает доступ к определённым участкам личных данных о
здоровье, и понимают преимущества предоставления этих данных.

Избегайте запроса о предоставлении данных о здоровье до того, как пользователи


получат шанс понять, для чего они будут использованы. Люди более склонны
предоставлять доступ к данным о здоровье, если они видят связь между их текущей
задачей и вашим запросом о предоставлении данных. Например, когда пользователи
заполняют профиль в приложении по снижению веса, разумно запросить доступ к
данным о весе, которые они хранят в приложении Здоровье. Но если приложение по
снижению веса запрашивает доступ к данным о весе сразу после запуска,
пользователи могут быть менее склонны предоставить свою личную информацию.

Используйте системный пользовательский интерфейс для запроса доступа к данным


пользователя. Пользователи ожидают увидеть системный лист разрешения, как
показан здесь, сразу как им будет нужно предоставить разрешение доступа к
данным. Чтобы предоставить хороший пользовательский опыт, избегайте
дублирования информации из листа разрешения в другие экраны вашего
приложения. Вместо этого, вы можете добавить к листу разрешения индивидуальные
сообщения, чтобы объяснить, почему ваше приложение запрашивает доступ к
определённым участкам данных (для получения большей информации см.
HKHealthStore Class Reference). Сохраняйте эти сообщения лаконичными, но
удостоверьтесь, что они ясно передают, как ваше приложение будет использовать эти
данные о здоровье и преимущества их предоставления.
ПРИМЕЧАНИЕ

Если пользователи решат прекратить предоставлять данные вашему приложению,


они внесут изменения в Настройки. Нет необходимости встраивать это действие в
пользовательский интерфейс вашего приложения.

Не используйте иконки, изображения или скриншоты приложения Здоровье в вашем


пользовательском интерфейсе. Так же как и со всеми элементами дизайна Apple, эти
изображения охраняются авторским правом и они не должны отображаться в вашем
приложении.

Не используйте термин “HealthKit” в вашем пользовательском интерфейсе. HealthKit


является термином разработчиков, обозначающим техническую платформу, которую
вы используете для доступа к данным, хранящимся в приложении Здоровье. Если вам
нужно обозначить способы, при помощи которых ваше приложение работает с
данными пользователей, хранящимися в приложении Здоровье, используйте термин
"приложение Здоровье." Например, вы можете сказать, что ваше приложение
"сохраняет информацию в приложение Здоровье" или "использует данные
приложения Здоровье."

Встроенные Покупки
Встроенные Покупки позволяют людям покупать цифровые товары внутри вашего
приложения, в магазине, созданном вами.

Например, пользователи могут:

 Обновлять простую версию приложения до премиум-версии

 Обновлять подписку на месячное содержимое

 Покупать виртуальные товары, такие как оружие нового уровня в игре

 Покупать и загружать новые книги

Вы используете платформу StoreKit, чтобы внедрить магазин в ваше приложение и


поддерживать Встроенные Покупки. Когда пользователь делает покупку, StoreKit
соединяется с App Store для безопасного проведения платежа, а затем уведомляет
ваше приложение, что оно может предоставить купленный элемент.

ВАЖНО

Встроенная Покупка только получает платёж — вы обеспечиваете дополнительный


функционал, такой как предоставление вашего магазина пользователям, открытие
встроенных функций и загрузка содержимого с ваших серверов. Также все товары,
которые вы продаёте через Встроенные Покупки, должны быть зарегистрированы в
App Store.

Чтобы узнать о технических требованиях добавления магазина в ваше приложение,


см. In-App Purchase Programming Guide. Для получения большей информации о
бизнес требованиях для использования Встроенных Покупок, посетите App Store
Resource Center. Вы также должны прочитать лицензионный договор для получения
точной информации о том, что вы можете продавать и как вы обязуетесь
предоставлять эти товары в приложении.

Следующие указания помогут вам в создании покупательского опыта, который


оценят пользователи.
Элегантно внедрите использование магазина в ваше приложение. При
предоставлении товаров и управлении транзакциями пользователя, создайте опыт
использования, который выглядит "как дома" в вашем приложении. Когда
пользователи заходят в магазин вашего приложения, вам не нужно, чтобы они
думали, что запустили другое приложение.

Используйте простые лаконичные заголовки и описания. Лучше всего, когда люди


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

Не изменяйте стандартного уведомления о подтверждении. когда пользователи


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

Game Center

Game Center позволяет людям играть в игры, организовывать онлайн игры с


множеством участников и многое другое. Игроки используют встроенное
приложение Game Center, чтобы войти в учётную запись, найти новые игры, добавить
новых друзей и просматривать таблицы лидеров и достижения.
Как разработчик игр вы используете программный интерфейс приложений GameKit,
чтобы размещать очки и достижения в Game Center, отображать таблицы лидеров в
пользовательском интерфейсе игры и помогать пользователям находить других
игроков. Чтобы узнать, как встроить Game Center в приложение, см. Game Center
Programming Guide.

Следующие указания помогут вам предоставить в приложении великолепный опыт


использования Game center.

Не создавайте индивидуальный пользовательский интерфейс, побуждающий


пользователей к регистрации в Game Center. Когда люди начинают использование
вашего приложения, совмещённого с Game Center, они еще не зарегистрировались в
Game Center на своих устройствах. Система автоматически побуждает их к
регистрации. Отображение индивидуального пользовательского интерфейса
регистрации не является необходимым и может ввести пользователей в заблуждение.

Как правило, используйте стандартный пользовательский интерфейс Game Center. В


редких случаях может быть разумным индивидуализировать пользовательский
интерфейс Game Center для игры, но это может привести к непониманию людей.
Стандартный пользовательский интерфейс Game Center, являющийся знакомым и
пользователям iOS, и пользователям OS X, создаёт ощущение принадлежности к
крупному игровому сообществу.

Предоставьте пользователям возможность отключить голосовой чат. Некоторым


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

Мультимедийная Реклама iAd

Когда вы позволяете рекламным объявлениям появляться в вашем приложении, вы


можете получать доход, если пользователи видят их или взаимодействуют с ними.
(Здесь вы можете увидеть примерный образец заполнения баннера iAd.)
Вы используете рекламу, предоставленную iAd Network в отдельном окне вашего
пользовательского интерфейса. Первоначально это окно содержит рекламный
баннер, который функционирует как вход в полное рекламное объявление. Когда
пользователи касаются баннера, реклама выполняет запрограммированные действия,
такие как воспроизведение видео, отображение интерактивного содержимого или
запуск Safari для открытия веб-страницы. Это действие может отображать
содержимое, которое охватывает ваш пользовательский интерфейс, или оно может
привести к переходу вашего приложения на задний фон.

Существует три типа баннеров, которые вы можете использовать в приложении:


стандартные, формата среднего прямоугольника и полноэкранные. Все типы
баннеров служат одной цели — отобразить пользователю рекламу, но они
отличаются по внешнему виду и функциональности.

Стандартный баннер занимает небольшую область экрана и обычно он отображается


так долго, как весь экран. Выберите те экраны приложения, которые будут
отображать стандартный баннер, и освободите место для окна баннера.
Все приложения iOS могут отображать стандартные баннеры. Используйте окно,
предоставленное классом ADBannerView, чтобы встроить стандартный баннер в
приложение.

Баннер формата средний прямоугольник по функционалу схож со стандартным


баннером и, так же как со стандартным баннером, вам нужно выбрать, где будет
отображаться баннер формата средний прямоугольник.
Баннеры формата средний прямоугольник доступны только в приложениях на iPad.
Используйте окно, предоставленное классом ADBannerView, чтобы встроить баннер
формата средний прямоугольник в приложение.

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

Все типы баннеров появляются внутри рамки iAd, которая отображает значок iAd в
нижнем правом углу. Рамка iAd разработана, чтобы хорошо смотреться при
прикреплении к нижнему краю экрана вашего приложения.

Чтобы обеспечить плавное объединение с рекламными баннерами и наилучший


пользовательский опыт, следуйте этим указаниям.

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

Панель Размещение Стандартного Баннера

Панель внизу экрана отсутствует Внизу экрана

Панели на экране отсутствуют Внизу экрана


Панель Размещение Стандартного Баннера

Панель инструментов или панель вкладок Прямо над панелью внизу экрана

Помещайте баннер формата средний прямоугольник туда, где он не будет мешать


содержимому пользователя. Так же как и стандартный баннер, средний баннер
лучше всего выглядит внизу экрана. Размещение баннера внизу экрана также
увеличивает вероятность того, что он не помешает пользователям.

Предоставляйте полноэкранный баннер модально во время перерывов в


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

Предоставляйте отображение полноэкранного баннера немодально, когда


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

Удостоверьтесь, что используете соответствующую анимацию, чтобы открыть и


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

Убедитесь, что все баннеры появляются в нужное время и в нужном месте вашего
приложения. Люди, вероятно, откроют рекламу в том случае, когда они чувствуют,
что это не прервёт их ход работы. Это особенно важно для приложений,
обеспечивающих эффектом погружения, таких как игры: Вам не следует размещать
баннеры там, где они будут мешать процессу игры.

Избегайте отображения таких баннеров на экране, которые пользователи, вероятно,


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

Насколько возможно, отображайте рекламные баннеры в обеих ориентациях. Лучше


всего, когда пользователям не нужно изменять ориентацию устройства, чтобы
переключиться от использования приложения к просмотру рекламы. Также
поддержка двух ориентаций позволяет вам допустить более широкий выбор
рекламы. Чтобы узнать, соответствует ли окно баннера обеим ориентациям, см. iAd
Programming Guide.

Не допускайте прокрутки стандартного баннера или баннера формата средний


прямоугольник. Если ваше приложение отображает прокручивающееся на экране
содержимое, удостоверьтесь, что окно баннера по-прежнему закреплено на своём
месте.

Когда люди посматривают рекламу или взаимодействуют с ней, остановите задачи,


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

Не останавливайте рекламу, за исключением некоторых случаев. Как правило, ваше


приложение продолжает работать, в то время как пользователи просматривают и
взаимодействуют с рекламой, так что вполне возможно, что произойдет событие,
настоятельно требующее их немедленного внимания. Тем не менее, существует
очень мало ситуаций, требующих закрытия просматриваемого объявления. Одна из
возможностей заключается в приложении, которое предоставляет передачу голоса по
протоколу IP (VoIP) службы. В таких приложениях, вероятно, имеет смысл отменить
работу объявления при поступлении входящего звонка.
ПРИМЕЧАНИЕ

Отмена рекламы может отрицательно сказаться на типах рекламы, которые получает


ваше приложение, и на вашем возможном доходе.

AirPrint

Используя AirPrint люди могут беспроводным способом печатать содержимое вашего


приложения и использовать приложение Print Center для проверки состояния печати.

Вы можете воспользоваться преимуществами встроенной поддержки печати


изображений и PDF или вы можете использовать особый программный интерфейс
печати для индивидуального форматирования и рендеринга. iOS управляет
открытием принтера, планированием и выполнением задач на выбранном принтере.

Как правило, пользователи нажимают стандартную кнопку Действие в вашем


приложении, когда хотят что-либо напечатать. Когда они выбирают элемент для
печати в появившемся окне, они могут выбрать принтер, установить доступные
настройки печати и нажать кнопку Печать, чтобы начать процесс.

Пользователи могут проверить состояние процесса, заданного ими в Центре Печати,


и являющегося фоновым системным приложением, которое доступно только во время
выполнения процесса печати. В Центре Печати пользователи могут просматривать
текущие очереди печати, получать подробную информацию о конкретном процессе
и даже отменить задачу.

Вы можете поддерживать основную печать в вашем приложении, используя


сравнительно небольшое количество дополнительного кода (для получения сведений
о добавлении поддержки печати в коде, см. Drawing and Printing Guide for iOS). Для
того чтобы пользователи оценили опыт печати в вашем приложении, следуйте
следующим рекомендациям:
Используйте предоставляемую системой кнопку действия. Пользователям знакомо
значение и функции этой кнопки, поэтому использование её по возможности является
хорошей идеей. Основным исключением является случай, когда ваше приложение не
содержит панели инструментов или панели навигации. Тогда вам нужно создать
уникальную кнопку печати, которая может появиться в основном пользовательском
интерфейсе вашего приложения, потому что кнопка Действия может быть
использована только в панели инструментов или панели навигации.

Отображайте элемент Печати, когда печать является основной функцией в текущем


контексте. Если печать неуместна в данном контексте, или если пользователи,
вероятно, не хотят печатать, не включайте элемент Печати в окне, открывающемся
посредством кнопки Действие.

В случае необходимости предоставляйте пользователям дополнительные


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

Не отображайте соответствующий для печати пользовательский интерфейс, если


пользователь не может печатать. Убедитесь в том, что вы проверили устройство
пользователя на поддержку печати до того, как отобразили пользовательский
интерфейс, который предлагает печать в качестве опции. Чтобы узнать, как сделать
это в коде, см. UIPrintInteractionController Class Reference.

Доступ к Данным Пользователя

Службы Местоположения позволяют приложению определять приблизительное


географическое местоположение людей, направление, в котором они указывают
устройством и направление, в котором они двигаются. Другие системные службы,
такие как контакты, Календарь, Напоминания и Библиотека Фотографий также
позволяют получить доступ к пользовательским данным, которые люди в них хранят.

Хотя люди ценят удобство использования приложения, которое уже знает о них
довольно много, они также ожидают наличия опции сохранения своих личных
данных. Например, людям нравится автоматически обозначать содержимое своим
местоположением или искать друзей, которые находятся неподалёку. Но они также
ценят возможность отключать такие функции, когда не хотят рассказывать остальным
о своем местоположении. (Чтобы узнать больше о том, как сделать ваше приложение
территориально ориентированным, см. Location and Maps Programming Guide.)

Эти указания помогут вам в запросе данных пользователя комфортным для людей
способом.

Убедитесь, что пользователи понимают, почему их просят предоставить личные


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

Объясните, зачем вашему приложению нужна информация, если это не является


очевидным. Вы можете предоставить текст, который появляется в предупреждении
под системным заголовком, такой как "Название Приложения" хочет получить Доступ
к Вашим Контактам" или для локальных уведомлений, "Разрешите "Название
Приложения" Использовать Ваше Местоположение Во Время Использования
Приложения." Вам нужно, чтобы этот текст был точным и вежливым, чтобы люди
поняли, почему вы запрашиваете доступ к информации, и не чувствовали, что на них
давят.

Ваш аргументированный текст должен:

 Исключить использования названия вашего приложения. Системный заголовок


предупреждения уже включает в себя название вашего приложения.

 Ясно объяснять, для чего вашему приложению нужны эти данные. Если
необходимо, вы можете также описать способы, при которых ваше приложение
не будет использовать эти данные.

 Использовать ориентированную на пользователя терминологию и быть


локализуемым.
 Быть настолько коротким, насколько возможным, одновременно оставаясь
простым для понимания. Насколько возможно, избегайте использования более
одного предложения.

 Использовать соответствующее предложению написание. (Это значит, что


первое пишется прописными буквами, а остальные слова — строчными
буквами, если только они не являются именами или прилагательными
собственными.)

Запрашивайте разрешение при запуске приложения, только если ваше приложение


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

Избегайте осуществления программных звонков, инициирующих предупреждение до


того, как пользователь выберет функцию, которой необходимы данные. Таким
образом, вы не заставляете людей гадать, зачем вашему приложению нужны их
личные данные, когда они делают что-то, для чего эти данные не требуются. (Имейте
ввиду, что проверка предпочтений пользователя в Службах Местоположения не
инициирует предупреждение.)

Для получения данных о местоположении, проверьте предпочтения в Службах


Местоположения, чтобы избежать ненужного инициирования предупреждения. Вы
можете использовать программный интерфейс Core Location, чтобы получить эти
настройки (чтобы узнать, как это сделать, см. Core Location Framework Reference).
Используя это знание, вы можете инициировать предупреждение максимально
близко к функции, которая запрашивает информацию о местоположении, или,
возможно, совсем избежать предупреждения.

Быстрый Предпросмотр

Используя Быстрый Предпросмотр, пользователи могут просматривать документ


внутри вашего приложения, даже если ваше приложение не может открыть документ.
Например, вы можете позволить пользователям предварительно просмотреть
документы, которые они загрузили с веб-сайта или получили из других источников.
Чтобы узнать больше о том, как обеспечить Быстрый Предпросмотр документа в
вашем приложении, см. Document Interaction Programming Topics for iOS.

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

Вы можете преподнести предварительный просмотр документа в новом окне вашего


приложения либо в полноэкранном модальном окне. Способ преподнесения вы
выбираете в зависимости от того, на каком устройстве работает ваше приложение.

На iPad отображайте предпосмотр документа модально. Большой экран iPad


подходит для отображения предварительного просмотра документа в среде
погружения, которую пользователи с лёгкостью могут покинуть. Увеличение
изображение особенно хорошо подходит для отображения предварительного
просмотра.

На iPhone отображайте предпросмотр документа в специальном окне, желательно в


окне навигации. Это позволит пользователям перемещаться из предварительного
просмотра документа без потерь контекста в вашем приложении. Хотя отображение
предпросмотра документа в приложении на iPhone модально возможно, этого делать
не рекомендуется. (Имейте ввиду, что увеличение изображения на iPhone
недоступно.)

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

Звук
Является ли звук основной частью пользовательского опыта вашего приложения или
дополнительным расширением, вам нужно знать, какой работы звука ожидают
пользователи и как оправдать их ожидания.

Прочувствуйте Ожидания Пользователей

Пользователи могут использовать элементы управления устройства, чтобы управлять


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

Пользователи ставят свои устройства на бесшумный режим, когда они хотят:

 Избежать отвлечения неожиданными звуками, такими как рингтон телефона и


звук и входящего сообщения

 Избежать звуков, которые являются побочным эффектом пользовательских


действий, таких как звук клавиатуры или другая обратная связь, случайные
звуки или звуки запуска приложения

 Избежать звуков в игре, которые не являются необходимыми для


использования, такие как саундтреки и звуковые эффекты

Например, в театре пользователи переключают свои устройства на бесшумный


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

Переключатель Звонок/Без Звука не заглушает звуки, которые возникают из-за


действий пользователя, которые точно и ясно были предприняты для создания звука.
Например:

 Проигрывание медиафайлов в приложениях, созданных для их


воспроизведения, не будет беззвучным, так как воспроизведение этих файлов
было явно запущено пользователем.

 Будильник не будет беззвучным, потому что он был явно заведён


пользователем.
 Аудиозапись в приложении для изучения языка не будет беззвучной, потому что
пользователь предпринял явное действие, чтобы её услышать.

 Разговор в приложении аудио-чат не будет беззвучным, потому что


пользователь запустил это приложение для конкретной цели — аудио-чата.

Пользователи используют кнопки громкости для регулировки уровня громкости всех


звуков, которые устройство может воспроизвести, включая песни, звуки приложения
и звуки устройства. Пользователи могут использовать кнопки регулировки громкости,
чтобы приглушить любой звук независимо от положения переключателя Звонок/Без
Звука. Использование кнопки регулировки громкости для настройки приложения во
время проигрывания аудио также регулирует общую громкость системы, за
исключением громкости звонка.

IPHONE

Когда аудио не воспроизводится, кнопка регулировки громкости, выступает в роли


регулятора громкости звонка.

Пользователи используют гарнитуры и наушники, чтобы слышать звуки в частном


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

Когда пользователи подключают гарнитуру или наушники или подключают


беспроводное аудио устройство, они намерены продолжать прослушивание
текущего аудио, но персонально. По этой причине они ожидают, что приложение,
воспроизводящее аудио в данный момент, продолжит свою работу без остановок.

Когда пользователи отключают гарнитуру или наушники или отсоединяются от


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

Определите Работу Аудио в Вашем Приложении

В случае необходимости вы можете настроить относительно независимые уровни


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

Убедитесь, что ваше приложение может отображать пикеры аудиомаршрута в случае


необходимости. (аудиопоток —это электронное направление звуковых сигналов,
например, от устройства к наушникам или от устройства к говорящему.) Даже если
пользователи физически не подключают (отключают) беспроводные аудио
устройства, они все еще хотят иметь возможность выбора иного аудиопотока. Чтобы
это обеспечить, iOS автоматически отображает элемент управления, который
позволяет пользователям выбрать выходной аудиопоток (используйте класс
MPVolumeView, чтобы отобразить элемент управления в вашем приложении). Так как
выбор другого аудиопотока — это действие, инициируемое пользователями, они
ожидают, что воспроизводимое в настоящее время аудио продолжится без
прерывания.

Если вам надо отобразить слайдер громкости, не забудьте использовать


предоставляемый системой слайдер громкости, доступный при использовании класса
MPVolumeView. Имейте ввиду, что когда устройство вывода аудио не поддерживает
регулятор громкости, слайдер громкости заменяется соответствующим названием
устройства.

Если ваше приложение воспроизводит только звуковые эффекты пользовательского


интерфейса, не являющиеся важными для функциональности, используйте Сервисы
Звуковой Системы. Сервисы Звуковой Системы — это технология iOS, которая создаёт
звуки предупреждений и пользовательского интерфейса, а также запускает
вибрацию. Она не подходит ни для какой другой цели. Когда вы используете
Сервисы Звуковой Системы для создания звука, вы не можете влиять на то, как ваше
аудио будет взаимодействовать с аудио на устройстве, или как оно должно отвечать
на прерывания и изменения конфигурации устройства. Чтобы увидеть пример
проекта использования этой технологии, см. Audio UI Sounds (SysSound).

Если звук играет важную роль в вашем приложении, используйте Сервисы Аудио
Сессии или класс AVAudioSession. Эти программные интерфейсы не производят звук,
вместо этого они помогут вам выразить, как ваше аудио должно взаимодействовать с
аудио на устройстве и реагировать на прерывания и изменения в конфигурации
устройства.

IPHONE
Независимо от того, какую технологию вы используете для создания аудио, или как
вы определяете его работу, телефон всегда может прервать работу приложения. Это
потому, что ни одно приложение не должно мешать людям получать входящие
звонки.

В Сервисах Аудио Сессии аудио сессия работает как посредник аудио между вашим
приложением и системой. Одним из наиболее важных аспектов аудио сессии
является категория, которая определяет работу аудио в вашем приложении.

Для того, чтобы реализовать преимущества Сервисов Аудио Сессии и предоставить


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

 Выберите категорию аудио сессии, основанную на семантическом значении, а


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

 В редких случаях добавляйте аудио сессии свойство изменять стандартную


работу категории. Стандартная работа категории предоставляет то, чего
ожидает большинство пользователей, так что вы должны тщательно подумать,
прежде чем измените эту работу. Например, вы можете добавить свойство
погружения, чтобы убедиться, что ваше аудио громче, чем всё остальное (за
исключением аудио звонка), если это то, чего ожидают от вашего приложения
пользователи. (Чтобы узнать больше о свойствах аудио сессии см. Fine-Tuning a
Category.)

 Рассмотрите, на чем базируется ваш выбор категории в текущей аудио среде


устройства. Это может иметь смысл, если, например, пользователи могут
использовать ваше приложение, слушая другое аудио, а не ваш саундтрек. Если
вы делаете это, убедитесь, что не заставляете пользователей прекращать
прослушивание музыки или делать явный выбор саундтрека при запуске
приложения.
 Как правило, избегайте изменений категорий во время работы вашего
приложения. Основная причина изменений категории — это если ваше
приложению требуется поддержка записи и воспроизведения в разное время. В
таком случае, при необходимости лучше переключиться между категориями
Record и Playback, чем выбирать категории Play и Record. Это потому, что выбор
категории Record гарантирует, что никакие предупреждения (например,
оповещение о входящем текстовом сообщении) не будут звучать, пока идет
запись.

Таблица 35-1 отображает список категорий аудиосессий, которые вы можете


использовать. Разные категории позволяют приглушить звуки переключателем
Звонок/Без Звука (или блокировкой устройства), воспроизводить вместе с другими
аудио или воспроизводить их, когда приложение работает в фоновом режиме. (Для
получения точных категорий и имён, таких, которые используются в программном
интерфейсе, см. Audio Session Programming Guide.)

Категория Значение Беззвучный Смешанный Фоновый

Звуки повышают
функциональность
Индивидуальное приложения и
Да Нет Нет
Окружение должны
приглушать
остальное аудио.

Звуки повышают
функциональность
приложения, но не
Окружение Да Да Нет
должны
приглушать
остальное аудио.

Звуки имеют Нет (по


важное значение умолчанию)
Воспроизведение для Нет Да

функциональности Да (когда

приложения и добавлено
Категория Значение Беззвучный Смешанный Фоновый

могут смешиваться свойство


с другим аудио. смешивания
с
остальным)

Аудио
Запись записывается Нет Нет Да
пользователем.

Нет (по
умолчанию)
Звуки
предоставляют Да (когда
Воспроизведение добавлено
вход и выход, Нет Да
и Запись свойство
последовательно
и одновременно. смешивания
с
остальным)

Приложение
выполняет
аппаратную
Обработка поддержку Нет
Нет Да*
Аудиосигналов кодирования Данных
аудио (не
воспроизведение
или запись).

Таблица 35-1 Категории Аудиосессий и связанные с ними характеристики

* Если вы выбираете категорию аудиообработки и хотите выполнить обработку в


фоновом режиме, то вам нужно предотвратить приостановку вашего приложения до
того, как закончится обработка. Чтобы узнать, как это сделать, см. Выполнение
Долгосрочных Фоновых Задач.
Далее приведено несколько ситуаций, которые демонстрируют, как выбрать
категорию аудиосессии, которая предоставит опыт, который оценят пользователи.

Ситуация 1: Образовательное приложение, помогающее людям выучить новый язык.


Вы предоставляете:

 Обратную связь звуков, которые воспроизводятся, если пользователь касается


определённых элементов управления

 Запись слов и фраз, которые воспроизводятся, когда пользователи хотят


услышать примеры правильного произношения

В этом приложении звуки являются важной частью основных функций. Пользователи


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

Чтобы предоставить использование аудио, которое ожидают пользователи, лучше


использовать категорию Воспроизведение. Хотя эта категория может быть улучшена,
чтобы разрешить смешивание с другим аудио, данное приложение должно
использовать характеристики по умолчанию, чтобы гарантировать, что другие аудио
не конкурируют с образовательным содержимым, выбранным пользователем.

Ситуация 2: Передача голоса по протоколу IP (VoIP) приложения. Вы предоставляете:

 Способность принимать аудиовход

 Способность воспроизводить аудио

В этом приложении звуки являются важной частью основных функций. Люди


используют это приложение для общения с другими зачастую во время
использования другого приложения. Пользователи ожидают иметь возможность
принимать звонки, когда они переключили свое устройство в беззвучный режим
работы или устройство заблокировано. Они ожидают, что другое аудио не будет
воспроизводиться на протяжении всего разговора. Они также ожидают, что будут
способны продолжать звонки, когда приложение находится в фоновом режиме.

Чтобы создать в этом приложении пользовательский опыт, которого ожидают


пользователи, вам лучше использовать категории Воспроизведение и Запись. Также
удостоверьтесь, что активируете вашу аудиосессию только тогда, когда она вам
необходима, чтобы пользователи могли воспроизводить другое аудио между
звонками.

Ситуация 3: Игра, позволяющая пользователям вести героя через ряд разных задач.
Вы предоставляете:

 Различные игровые звуковые эффекты

 Музыкальное сопровождение

В этом приложении звук значительно повышает качество пользовательского опыта, но


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

Лучшая методика — определить, слушают ли пользователи другое аудио, когда


запускают ваше приложение. Не предоставляйте пользователям выбор между
саундтреком и другим аудио. Вместо этого используйте функцию Сервисов Аудио
Сессии AudioSessionGetProperty, чтоfvбы запросить состояние свойства
kAudioSessionProperty_OtherAudioIsPlaying. На основании ответа вы сможете выбрать
категорию Окружение или Соло (обе категории позволят пользователям играть без
звука):

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

 Если пользователи не слушают никакого аудио при запуске вашего


приложения, вам лучше выбрать категорию Индивидуальное Окружение.

Ситуация 4: Приложение, которое обеспечивает точные навигационные инструкции


для получения маршрута к месту назначения пользователя в реальном времени. Вы
предоставляете:

 Озвучиваемое направление каждого шага

 Несколько звуков обратной связи

 Возможность для пользователей продолжать слушать своё аудио


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

Чтобы позволить людям слушать их аудио во время использования вашего


приложения, вы можете добавить свойство
kAudioSessionProperty_OverrideCategoryMixWithOthers. Однако, вам также лучше
убедиться, что пользователи могут слышать голосовые инструкции поверх
воспроизводимого аудио. Чтобы сделать это, вы можете применить к аудио сессии
свойство kAudioSessionProperty_OtherMixableAudioShouldDuck, чтобы гарантировать,
что ваше аудио громче, чем всё остальное воспроизводимое в текущий момент, за
исключением звонка на iPhone. Эти настройки позволяют приложению возобновить
аудио сессию во время фоновой работы приложения, что даёт гарантию актуального
обновления навигации.

Ситуация 5: Приложение для ведения блога, позволяющее пользователям загружать


тексты и изображения на веб-сайт. Вы предоставляете:

 Короткий звуковой файл запуска

 Различные короткие звуковые эффекты, сопровождающие действия


пользователя (например, звук, который воспроизводится, когда был
опубликован пост)

 Звуковой сигнал, который играет, если загрузка файлов не удаётся

В этом приложении звук улучшает качество пользовательского опыта, но это не


является важным. Основная задача приложения никак не связана с аудио, и
пользователям не нужно слышать звуки, для успешного использования приложения. В
этом случае для воспроизведения звуков вам лучше использовать Сервисы Звуковой
Системы. Это потому, что аудио контекст всех звуков приложения соответствует
предназначенной цели этой технологии — воспроизводить звуковые эффекты и
предупреждения пользовательского интерфейса, которые подчиняются блокировке
устройства и переключателю Звук/Без Звука так, как этого ожидают пользователи.

Управление Прерываниями Аудио


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

Чтобы обеспечить использование аудио, которое оценят пользователи, iOS


полагается на то, что вы:

 Определите тип прерывания аудио, которое может вызвать ваше приложение

 Отреагируете соответствующим образом на то, что ваше приложение


продолжит свою работу после прерывания аудио

Каждое приложение должно определять тип прерывания аудио, вызванное им, но не


каждое приложение должно определять, как реагировать на окончание прерывания.
Это потому, что большинство типов приложений должно отвечать на окончание
прерывания возобновлением аудио. Только приложения, которые полностью или
частично являются приложениями воспроизведения медиа файлов, а также
предоставляющие элементы управления воспроизведения медиа файлов, должны
совершать дополнительный шаг, чтобы определить соответствующий ответ.

По идее, существует два типа прерываний аудио, основанных на типе аудио, которое
осуществляет прерывание, и на ожиданиях пользователей относительно того, как
конкретное приложение отреагирует, когда прерывание закончится:

 Возобновляемое прерывание вызвано аудио, которое пользователи


воспринимают как промежуточное звено в главном опыте прослушивания.

После окончания возобновляемого прерывания приложение, которое отображает


элементы управления воспроизведением медиафайлов, должно возобновить то, что
оно осуществляло перед возникновением прерывания, было ли это воспроизведение
аудио или пауза. Приложение, в котором нет элементов управления
воспроизведением медиафайлов, должно возобновить воспроизведение аудио.

Рассмотрим пример: пользователь слушает приложение для воспроизведения музыки


на iPhone и при получении вызова VoIP находится в середине песни. Отвечая на
вызов, пользователь ожидает, что воспроизведение приостановится на время его
разговора. По завершении вызова, пользователь ожидает, что приложение
воспроизведения аудио автоматически продолжит воспроизведение песни, потому
как музыка, а не вызов, является основной функцией, и воспроизведение не было
остановлено пользователем перед звонком. С другой стороны, если пользователь
приостановил воспроизведение аудио до вызова, он не ожидает автоматического
включения воспроизведения аудио.

Другие примеры приложений, которые вызывают возобновляемые прерывания — это


приложения, которые воспроизводят будильники, голосовые указания (например,
направление движения автомобиля) или другие прерывающиеся аудио.

 Не возобновляемые прерывания вызваны аудио, которые пользователи


воспринимают как главное звучание, такое как аудио в приложении
воспроизведения мультимедиа.

По окончании не возобновляемых прерываний, приложение, отображающее


элементы управления воспроизведением медиа файлов, не должно возобновлять
воспроизведение аудио. Приложение, в котором нет элементов управления
воспроизведением медиафайлов, должно возобновить воспроизведение аудио.

Рассмотрим пример: пользователь слушает приложение для воспроизведения музыки


(музыкальное приложение 1), когда другое приложение воспроизведения музыки
(музыкальное приложение 2) прерывает его. В ответ на это пользователь решает
послушать музыкальное приложение 2 в течение какого-то промежутка времени.
После выхода из музыкального приложения 2 пользователь не ожидает, что музыка
приложения 1 автоматически начнет воспроизводиться, потому что музыкальное
приложение 2 было преднамеренно выбрано для прослушивания.

Следующие рекомендации помогут вам решить, какую информацию предоставлять и


как продолжать воспроизведение аудио по окончании прерываний.

Определите тип прерывания аудио, вызванного вашим приложением. Это можно


сделать путем отключения аудиосессии одним из следующих двух способов после
окончания аудио:

 Если ваше приложение вызвало возобновляемое прерывание, отключите


аудиосессию с помощью метки
AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation.

 Если ваше приложение вызвало не возобновляемое прерывание, отключите


ваши аудиосессии без каких-либо меток.
Предоставляя или не предоставляя, эти метки позволяют iOS обеспечивать
прерываемые приложения способностью при необходимости автоматически
возобновлять воспроизведение аудио.

Определите, нужно ли возобновлять аудио по окончании прерывания. Основывайте


своё решение на опыте использования аудио, которое вы предоставляете в
приложении.

 Если ваше приложение отображает элементы управления воспроизведением


медиафайлов, которые нужны пользователям для воспроизведения или
остановки аудио, вам нужно проверить метку
AVAudioSessionInterruptionFlags_ShouldResume по окончании прерывания
аудио.

Если ваше приложение получает сигнал Should Resume (Следует Возобновить), ваше
приложение должно:

o Возобновить воспроизведение аудио, если оно продолжалось до момента


прерывания

o Не возобновлять воспроизведение аудио, если ваше приложение не


воспроизводило его до момента прерывания

 Если ваше приложение не отображает элементы управления воспроизведением


медиафайлов, которые нужны пользователям для воспроизведения или
остановки аудио, вы должны предусмотреть в вашем приложении возможность
всегда возобновлять воспроизведение аудио по окончании прерывания.

Например, игра, воспроизводящая саундтрек, должна возобновлять его


воспроизведение после приостановки.

Удалённое Медиауправление в Случае Необходимости

Приложения могут получать удалённое управление, когда люди используют


элементы медиауправления iOS или аксессуары управления, такие как элементы
управления гарнитуры. Это позволяет вашему приложению принять пользовательский
ввод, который не происходит через ваш пользовательский интерфейс, вне
зависимости от того, воспроизводит ли ваше приложение аудио на переднем плане
или в фоновом режиме.
Приложения могут отсылать видео в доступное оборудование AirPlay, такое как Apple
TV, и переносить продолжающееся воспроизведение в фоновый режим. Такое
приложение может принять пользовательский ввод через удалённые элементы
управления, чтобы пользователи могли управлять воспроизведением видео, если
приложение работает в фоновом режиме. В дополнение, такой тип приложения,
находясь в фоновом режиме, также может перезапускать аудиосессию после
прерывания.

Приложение воспроизведения медиафайлов, в частности, должно адекватно


реагировать на события удаленного медиауправления, особенно если
воспроизведение аудио или видео осуществляется в то время, как приложение
находится в фоновом режиме.

Для выполнения обязанностей, связанных с привилегией воспроизведения


медиафайлов, в то время, как ваше приложение работает в фоновом режиме,
обязательно соблюдайте следующие правила:

Ограничьте способность вашего приложения принимать действия удалённого


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

Насколько возможно, используйте элементы управления, предоставленные системой,


чтобы обеспечить поддержку AirPlay. Когда вы используете класс
MPMoviePlayerController, чтобы обеспечить воспроизведение AirPlay, вы можете
воспользоваться преимуществами стандартных элементов управления, которые
позволяют пользователям выбрать совместимое с AirPlay устройство, находящееся в
пределах досягаемости. Или вы можете использовать класс MPVolumeView, чтобы
отобразить совместимые с AirPlay аудио или видео устройства, из которых
пользователь может выбрать. Пользователи привыкли к внешнему виду и поведению
этих стандартных элементов управления, поэтому они будут знать, как использовать
их в вашем приложении.

Не меняйте назначения событий, даже если событие не имеет значения в вашем


приложении. Пользователи ожидают, что элементы управления медиафайлами и
аксессуарами iOS в вашем приложении будут работать надлежащим образом. Вам не
нужно управлять событиями, которые не нужны вашему приложению, но события,
которыми вы управляете, должны соответствовать ожиданиям пользователей. Если вы
меняете назначение события, вы вводите пользователей в заблуждение и рискуете
привести их в такие обстоятельства, из которых они смогут выйти только покинув
ваше приложение.

Управление Голосом

Управление Голосом увеличивает доступность для слепых пользователей и


пользователей со слабым зрением, а также для пользователей с определёнными
трудностями при обучении.

Чтобы убедиться, что пользователи Голосового Управления могут использовать ваше


приложение, вам нужно предоставить некоторую описательную информацию
касательно окон и элементов управления в пользовательском интерфейсе.
Поддержка Голосового Управления не требует изменений визуального оформления
вашего пользовательского интерфейса каким-либо образом.

Когда вы используете стандартные элементы пользовательского интерфейса


абсолютно привычным образом, у вас мало (если вообще имеется) какая-либо
дополнительная работа. Чем индивидуальнее ваш пользовательский интерфейс, тем
больше индивидуальной информации вам нужно предоставить, чтобы Голосовое
Управление описывало ваше приложение правильно.

При доступности Голосового Управления в вашем приложении iOS, пользователи


могут увеличить базу пользователей и помочь вам войти на новые рынки. Поддержка
Голосового Управления также может помочь вам реагировать на руководства
доступности, созданные различными руководящими органами.

Составление Маршрута

Карты могут отображать выбор маршрутов к месту назначения пользователя:

Карты также могут отображать список приложений, составляющих маршруты,


включая приложения, установленные на устройстве и в App Store, когда люди хотят
получить дополнительную информацию о перемещении.
Приложение, составляющее маршруты, предоставляет информацию о способах
перемещения для выбранного маршрута. Люди ожидают, что приложения,
составляющие маршрут, будут быстрыми, простыми в использовании и, прежде
всего, правильными. Следование этим указаниями в данном разделе поможет вам
предоставить пользователям информацию о перемещении, которой они смогут
доверять, и пользовательский опыт, который они оценят.

ВАЖНО

Карты предоставляют людям направление движения автомобиля и пешехода для их


маршрута. Составляющие маршрут приложения предоставляют информацию о
перемещении, которая сфокусирована на подробных инструкциях направления,
использующих попеременные режимы перевозок — таких как автобус, трамвай,
метро, паром, мотоцикл, тротуар, транспорт, совершающий короткие регулярные
рейсы и так далее.

Если ваше приложение не предоставляет информации о перемещении для маршрута,


выбранного пользователем, не позиционируйте его как приложение, составляющее
маршрут.

Предоставляйте функции, которые обещает ваше приложение. Когда люди видят


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

Существует два основных способа, с помощью которых вы можете создать в


пользователях уверенность в вашем приложении для составления маршрута:

 Как можно точнее выделите географические регионы, которые вы


поддерживаете. Например, если ваше приложение помогает людям получить
информацию об автобусных маршрутах Парижа, поддерживаемым вами
регионом должен быть Париж, а не Иль-де-Франс и не Франция.

 Будьте точными относительно типов перевозок, которые вы предоставляете.


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

ПРИМЕЧАНИЕ

Хотя правильность сообщения о поддерживаемом вами регионе может значить, что


ваше приложение будет отображаться в транзитном списке менее часто, это может
увеличить степень доверия пользователей.

Упростите пользовательский интерфейс для лёгкости использования. Простота


использования особенно важна для приложений, составляющих маршрут, потому что
люди, как правило, используют их в непростых условиях, таких как яркий солнечный
свет или тёмное помещение трамвая, в сложный момент и когда они торопятся.
Удостоверьтесь, что текст вашего приложения прост для прочтения при любом свете
и кнопки удобны для правильного нажатия, даже если поездка не гладкая.

Сконцентрируйтесь на маршруте. Не смотря на то, что вспомогательная информация


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

Предоставьте пошаговую информацию о маршруте. Люди никогда не должны


чувствовать, что ваше приложение их оставило. Но даже если вы правильно
обозначили поддерживаемый регион, вы не можете предполагать, что пользователи
уже находятся на первой транзитной остановке маршрута или что последняя
транзитная остановка находится в том же месте, что и их место назначения. Чтобы
справиться с этой ситуацией, сперва проверьте расстояния в начале и в конце
маршрута. Если расстояния довольно небольшие, предоставьте пешеходные
инструкции от текущего местоположения пользователя до первой транзитной
остановки и от последней транзитной остановки до конечного места назначения.
Если ходьба не является подходящим выбором, попробуйте описать другие способы
передвижения пользователя. При необходимости вы можете предоставить
пользователям способ открыть Карты, чтобы они получили пешеходное направление
или направление автомобиля для этих точек маршрута.

Когда пользователи переходят от вашего приложения к Картам, не просите их


заново вводить информацию. Если пользователи переходят от Карт, вы уже знаете
начальную и конечную точки маршрута, который им нужен, так что вы можете
предоставить подходящую транзитную информацию как только откроется ваше
приложение. Если пользователи запускают ваше приложение с Начальной Страницы,
предоставьте лёгкий способ ввести детали маршрута.

Отображайте транзитную информацию и графическим, и текстовым способами.


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

ПРИМЕЧАНИЕ

Независимо от формата, ключевым является отображение вами одинаковой


транзитной информации о маршруте пользователя. Например, если маршрут состоит
из пяти шагов, и просмотр с изображением, и представление в виде списка маршрута
должны описывать одинаковые пять шагов.

Когда выше приложение выбрано из транзитного списка, лучше всего начать


отображение полного маршрута, включая пешеходные отрезки до и от транзитных
остановок. Если уместно — в просмотре с изображением. Просмотр с изображением
предоставляет пользователям общий вид различных шагов путешествия и показывает
им, как маршрут встроен в окружающую географическую местность.

Обогатите просмотр с изображением посредством дополнительной информации.


Люди ожидают, что карты в вашем приложении будут работать похожим образом с
другими картами, которые они использовали. В дополнение к возможности
увеличивать и уменьшать, вы должны отобразить примечания, предоставляющие
пользователям нужную информацию. Например, вы можете отобразить булавки,
отображающие текущее местоположение пользователя, место назначения и
пересадки или достопримечательности на пути. Удостоверьтесь, что избегаете
отображения одной булавки, потому что пользователям сложно сказать, что она
значит, если отсутствует дополнительный контекст. Для получения большей
информации о просмотре с изображением в вашем приложении, см. Просмотр с
Изображением.

Насколько возможно, объедините готовые карты, такие как карта системы метро, с
изображением карты. Хорошим способом сделать это является наложить готовое
изображение на изображение карты, чтобы пользователи могли видеть, как их
маршрут и текущее местоположение сопоставлены с более крупной транспортной
системой.

ПРИМЕЧАНИЕ

Если вы решаете отобразить готовое изображение карты само по себе,


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

Предоставьте пользователям разные способы отбирать несколько транзитных опций.


Множество факторов влияет на решения людей, связанные с транспортом, такие как
время суток, погода и количество вещей, которые они несут с собой. Так что важно
упростить сравнение транспортных опций. Например, вы можете позволить
пользователям отбирать транспортные опции по времени начала или завершения,
требуемому количеству ходьбы, количеству остановок на пути, а также числу
пересадок или необходимым типам перевозок. Независимо от порядка, в котором вы
отображаете несколько транзитных опций, удостоверьтесь, что пользователи могут
немедленно определить различия между ними.

Рассмотрите использование push-уведомлений для предоставления пользователям


важной информации о маршруте. Насколько возможно, дайте людям знать, когда
информация о транспорте меняется, чтобы они могли скорректировать свои планы.
Например, если поезд опаздывает или автобусная линия временно недоступна,
людям может понадобиться выбрать другой маршрут до места назначения. А в
маршруте, который включает в себя длинные остановки между шагами, люди оценят
уведомления об отправлении транспорта до следующей части путешествия.

Меню Редактирования

Люди могут открыть меню редактирования для таких действий, как Вырезать,
Вставить и Выбрать в окне текста, изображения или веб-окне.

Меню редактирования
Меню выбора

Вы можете скорректировать некоторые функции меню, чтобы предоставить


пользователям больше контроля над содержимым вашего приложения. Например, вы
можете:

 Определить, какие из стандартных команд меню подходят для текущего


контекста

 Определить положение меню до того, как оно появится, чтобы вы могли


предотвратить загораживание важных частей пользовательского интерфейса

 Определить объект, выбранный по умолчанию, когда пользователи выполняют


двойное касание, чтобы открыть меню
Вы не можете менять цвет или форму самого меню.

Для получения информации касательно того, как реализовать эти действия в коде,
см. Copy, Cut, and Paste Operations.

Чтобы гарантировать соответствие вашего приложения пользовательскому


ожиданию, вы должны:

Отображать команды, которые имеют смысл в данном контексте. Например, если ни


один элемент не выделен, то меню не должно содержать команды “Копировать” или
“Вырезать”, поскольку эти функции работают с выделенными элементами.
Аналогично, если что-то выбрано, меню не должно содержать пункт “Выбрать”. Если
вы поддерживаете меню редактирования в индивидуализированном окне, вы несете
ответственность за то, чтобы команды, отображаемые в меню, соответствовали
текущему контексту.

Встроить отображение меню в расположение. iOS отображает меню редактирования


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

Осуществить обоих жестов, которые пользователи могут использовать для вызова


меню. Хотя прикосновение и удержание являются основными жестами пользователей,
которые используются для раскрытия меню редактирования, пользователи также
могут дважды нажать на слово в текстовом окне, чтобы выбрать слово и открыть
меню в тоже время. Если вы предоставляете меню в индивидуализированном окне,
удостоверьтесь, что оно отвечает обоим жестам. В дополнение, вы можете
определить объект, выбранный по умолчанию, когда пользователь выполняет
двойное касание.

Избегать создания кнопок в пользовательском интерфейсе, выполняющие команды,


доступные в меню редактирования. Например, лучше позволить пользователям
выполнить копирование через меню редактирования, нежели предоставить кнопку
“Копировать”, иначе пользователи удивятся тому, что в вашем приложении одно и то
же действие можно выполнять двумя способами.

Продумать, возможно ли выделение статического текста, если это полезно для


пользователя. Например, пользователь может захотеть скопировать заголовок
изображения, но вряд ли захочет копировать метку элемента вкладки или заголовок
экрана, например Учётные Записи. В текстовом окне выбор слова должен
присутствовать по умолчанию.

Не создавать названия кнопок, на которые можно нажать. Название кнопки, на


которое можно нажать, усложняет для пользователей процесс открытия меню
редактирования без активации кнопки. В общем, элементам, функционирующим как
кнопки, не нужно быть выделяемыми.

Совместите поддержку действий "Отменить" и "Повторить" с поддержкой действий


"Копировать" и "Вставить". Пользователи зачастую хотят иметь возможность отменить
последнюю операцию, если они изменили свое решение. Поскольку меню
редактирования не требует подтверждения до выполнения своих действий, вы
должны дать пользователям возможность отменить или повторить эти действия.

Следуйте этим указаниям, если вам нужно создать индивидуальные элементы меню
редактирования, как показаны здесь:

Создайте элементы меню редактирования, которые редактируют, изменяют или


иным образом действуют непосредственно по выбору пользователя. Люди ожидают,
что стандартные элементы меню редактирования будут действовать в соответствии с
текстом или объектами в пределах текущего контекста. И лучше всего, когда ваши
индивидуальные элементы меню редактирования функционируют похожим образом.

Предоставляйте вместе индивидуальные элементы в списке после всех системных


элементов. Не перемешивайте ваши индивидуализированные элементы с
предоставленными системой.

Сохраняйте количество индивидуальных элементов меню редактирования разумным.


Вам не нужно поражать пользователей слишком огромным выбором.

Используйте лаконичные названия индивидуализированных элементов меню и


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

Отменить и Повторить

Пользователи предпринимают действие Отменить посредством встряхивания


устройства, которое отображает предупреждение, позволяющее им:

 Отменить то, что они только что ввели

 Повторить отмененный ввод

 Отменить операцию отмены

Вы можете обеспечить операцию “Отменить” в приложении в более общем виде,


указывая при этом:

 Действия, которые пользователи могут отменить или повторить

 Обстоятельства, при которых ваше приложение должно интерпретировать


встряхивание как жест отмены операции

 Сколько уровней отмены поддерживается


Чтобы узнать, как реализовать эти функции в коде, см. Undo Architecture. Если вы
поддерживаете операции Отменить и Повторить в своем приложении, выполните
следующие рекомендации, чтобы обеспечить хороший пользовательский опыт.

Предоставьте краткие описывающие фразы, которые будут говорить пользователям,


что именно они отменяют или повторяют. IOS автоматически предоставляет строки
"Отменить" и "Повторить" (включая пробел после слова) для заголовка кнопки
предупреждения об отмене, но вы должны предоставить одно или два слова,
описывающих действия, которые пользователи могут отменить или повторить.
Например, вы можете предоставить Изменение Названия или Адреса, чтобы создать
заголовки кнопок, такие как "Отменить Название" или "Повторить Изменения Адреса".
(Обратите внимание, что кнопка ”Отмена” в предупреждении не может быть изменена
или удалена.)

Избегайте размещения слишком длинного текста. Слишком длинный заголовок


кнопки сокращается и является сложным для понимания. И, так как этот текст
находится в заголовке кнопки, используйте написание с заглавной буквы и не
используйте знаки препинания.

Избегайте перегрузки жеста встряски. Даже если вы можете программно задать,


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

Используйте предоставленные системой кнопки Отменить и Повторить, только если


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

Тщательно соотносите возможности отмены и повтора действий с прямым


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

Клавиатуры и Окна Ввода

В iOS 8 и позже вы можете создавать индивидуализированные расширения


клавиатуры, которые люди могут использовать вместо предоставленной системой
клавиатуры в большинстве случаев. Чтобы узнать больше об указаниях, которые
управляют расширениями приложений, включая клавиатуры, см. App Extensions.
Чтобы узнать, как разработать индивидуальное расширение клавиатуры, см. Custom
Keyboard.

В надлежащем случае вы также можете создать индивидуализированное окно ввода,


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

Если вы предоставляете индивидуализированное окно ввода, удостоверьтесь, что его


функция очевидна.

Вы также можете предоставить индивидуализированное дополнительное окно ввода,


представляющее собой отдельное окно, которое появляется над клавиатурой (или
вашим окном ввода). Например, в некотором контексте Числа отображают
дополнительное окно ввода, которое помогает пользователям выполнять
стандартные или индивидуализированные вычисления по таблице значений.
Используйте стандартный щёлкающий звук клавиатуры, чтобы обеспечить звуковую
обратную связь, когда люди нажимают на индивидуализированные элементы
управления в вашем окне ввода. Чтобы узнать, как встроить этот звук в ваш код, см.
документацию для playInputClick в UIDevice Class Reference.

ПРИМЕЧАНИЕ

Стандартный щёлкающий звук доступен только для индивидуализированных окон


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

Элементы Пользовательского Интерфейса

Панели

Статус-панель

Статус-панель отображает важную информацию об устройстве и текущей


окружающей обстановке (ниже показана на iPhone).

Содержимое по умолчанию (тёмное)

Светлое содержимое

Статус-панель:

 Прозрачная

 Если присутствует, то всегда располагается у верхней границы экрана

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Вы можете установить один стиль статус-панели для всего приложения, а можете


позволить элементам управления индивидуальных окон установить соответствующий
стиль. Чтобы узнать больше, прочтите UIApplication Class Reference для получения
информации о постоянной UIStatusBarStyle и UIViewController Class Reference, чтобы
получить информацию о свойстве preferredStatusBarStyle.
Не создавайте индивидуализированную статус-панель. Пользователи зависят от
логичности системной статус-панели. Хотя вы можете скрыть статус-панель в
приложении, не рекомендуется создавать индивидуализированный пользовательский
интерфейс, который займёт её место.

Не допустите отображение прокручивающегося содержимого через статус-панель.


Так как пользователи прокручивают содержимое, вам не нужно, чтобы они видели
путаницу из содержимого приложения и элементов статус-панели в области её
расположения. Чтобы создать у пользователей впечатление вместительности
одновременно с осуществлением максимальной читабельности, удостоверьтесь, что
статус-панель имеет фон, который скрывает содержимое за ней. Далее приведено
несколько способов, позволяющих не допустить отображение прокручиваемого
содержимого через статус-панель:

 Для отображения содержимого используйте контроллер навигации.


Контроллер навигации автоматически отображает фон статус-панели и
гарантирует, что содержимое окна не будет видно за статус-панелью. (Чтобы
узнать больше о контроллерах навигации, см. Navigation Controllers.)

 Создайте не отвлекающее индивидуализированное изображение, такое как


градиент, и отобразите его за статус-панелью. Для гарантии, что изображение
остаётся за статус-панелью, вы можете использовать контроллер видов, чтобы
сохранить изображение над прокручивающимся окном, или вы можете
использовать прокручивающееся окно, чтобы оно оставалось неотрывным от
верхней части.

 Расположите содержимое избегая области статус-панели (области,


определённой свойством приложения statusBarFrame). Если вы сделаете это, вы
должны использовать фоновый цвет окна, чтобы отобразить сплошной фон за
статус-панелью.

Избегайте расположения отвлекающего содержимого за статус-панелью. В


частности, вам не нужно предполагать, что пользователям надо нажать на статус-
панель, чтобы получить доступ к содержимому или активировать элементы
управления в приложении.

Подумайте дважды, прежде чем совсем скроете статус-панель. Так как статус-панель
прозрачна, обычно нет необходимости скрывать её. Абсолютное скрытие статус-
панели означает, что пользователи должны выйти из вашего приложения, чтобы
посмотреть время или узнать, подключены ли они к Wi-Fi.

Рассмотрите необходимость скрытия статус-панели и другого пользовательского


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

Выберите цвет содержимого статус-панели, который соответствует вашему


приложению. Внешний вид по умолчанию отображает тёмное содержимое, которое
хорошо смотрится поверх содержимого приложения светлого цвета. Содержимое
статус-панели светлого цвета хорошо смотрится поверх тёмного содержимого
приложения.

По мере уместности отображайте индикатор активности сети. Индикатор активности


сети может отображаться в статус-панели для демонстрации пользователям
осуществления продолжительного доступа к сети. Чтобы узнать, как встроить этот
индикатор в вашем коде, см. Индикатор Активности Сети.

Панель Навигации

Панель навигации даёт возможность осуществлять навигацию через


информационную иерархию и, по выбору, управление содержимым экрана.

Панель навигации:

 Полупрозрачная

 Обычно расположена наверху экрана приложения, сразу под статус-панелью

В горизонтальном обычном (regular) режиме навигационная панель также может


отображаться внутри окна, которое не разворачивается за пределы экрана, как одна
панель контроллера разделённого окна.

 Может исчезать, когда появляется клавиатура, пользователь делает жест или


когда контроллер содержимого окна переходит в вертикальный компактный
(compact) режим.
 Может быть окрашена. (Используйте tintColor, чтобы окрасить кнопки панели.
Используйте barTintColor, чтобы окрасить фон панели.)

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Панель навигации содержится в контроллере навигации, который является


программным объектом, управляющим отображением иерархии
индивидуализированных окон. Чтобы узнать больше о создании навигационной
панели в вашем коде, см. Navigation Controllers, UINavigationController Class
Reference и UINavigationBar Class Reference.

Используйте панель навигации, чтобы осуществить навигацию среди различных окон


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

Когда пользователь выходит на новый уровень иерархии в навигации, должно


произойти две вещи:

 При необходимости, заголовок панели навигации должен измениться на


заголовок актуального уровня.

 Кнопка "Назад" должна появиться с левого края панели. Она может нести
название предыдущего заголовка уровня, если это имеет значение.
Когда это имеет значение, используйте заголовок текущего окна в качестве заголовка
панели навигации. Если использование заголовка панели навигации выглядит
излишне, вы можете оставить заголовок пустым. Например, в приложении Заметки не
используется заголовок текущей заметки, так как первая строка содержимого
обеспечивает весь контекст, который нужен пользователю.

Обдумайте расположение сегментированного элемента управления в панели


навигации на самом верхнем уровне приложения. Это особенно удобно, так как
помогает сгладить вашу информационную иерархию и делает поиск более простым
для пользователя. Если вы используете сегментированный элемент управления в
панели навигации, удостоверьтесь, что выбрали правильные заголовки кнопки
"Назад". (Для использования руководства см. Сегментированные Элементы
Управления.)

Если необходимо, рассмотрите использование подсказки, чтобы прояснить для


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

Если вам нужно использовать подсказку, напишите лаконичное предложение в одну


строку с соответствующей пунктуацией.

Избегайте загромождения панели навигации дополнительными элементами


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

Удостоверьтесь, что между кнопками, имеющими заголовки, достаточно места. Если


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

Насколько возможно, удостоверьтесь, что внешний вид индивидуализированной


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

Убедитесь, что индивидуализированная кнопка Назад по-прежнему выглядит и


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

ВАЖНО

Не создавайте мультисегментную кнопку "Назад". Кнопка "назад" всегда ведёт


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

Рассмотрите скрытие панели навигации, когда пользователи хотят сфокусироваться


на содержимом. Если вы сделали это, удостоверьтесь, что пользователи могут
возобновить панель навигации простым жестом, например, касанием.

Карты с видимой панелью навигации (и панелью инструментов)


Карты со скрытой панелью навигации (и панелью инструментов)

Панель Инструментов

Панель инструментов содержит элементы управления, которые выполняют действия,


связанные с объектами на экране или в окне.

Панель инструментов:

 Полупрозрачная
 Всегда отображается у нижней границы экрана или окна на iPhone

Также может отображаться у верхней границы экрана или окна на iPad.

 Может исчезать, когда появляется клавиатура, пользователь делает жест или


когда контроллер содержимого окна переходит в вертикальный компактный
(compact) режим.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Панель инструментов содержится в контроллере навигации, который является


объектом, управляющим отображением иерархии индивидуализированных окон.
Чтобы узнать больше о встраивании панели инструментов в вашем коде, см.
Displaying a Navigation Toolbar и UIToolbar Class Reference.

Используйте панель инструментов, чтобы предоставить набор действий, которые


пользователи могут совершить в текущем контексте.

Включите наиболее часто используемые команды, которые имеют смысл в текущем


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

Рассмотрите использование сегментированного элемента управления для


предоставления доступа к различным перспективам или режимам в текущем
контексте. Использование сегментированного элемента управления в панели
инструментов для демонстрации задач или режимов разных уровней приложения не
является хорошей идеей, потому что панель инструментов характерна для текущего
экрана или окна. Если вам нужно предоставить людям доступ к основным задачам,
окнам или режимам в приложении, используйте вместо этого панель вкладок. Чтобы
узнать больше о сегментированных элементах управления, см. Сегментированный
Элемент Управления. Чтобы узнать больше о панелях вкладок, см. Панель Вкладок.

Если вам нужно разместить более трёх элементов в панель инструментов,


используйте иконки. Так как кнопки с заголовками, как правило, занимают больше
места, чем иконки, сохранить их от слияния может быть сложно.

Удостоверьтесь, что между кнопками, имеющими заголовки, достаточно места. Если


между двумя или более кнопками панели инструментов недостаточно места, может
оказаться, что заголовки будут сливаться друг с другом и пользователям будет
сложно их различать. Если заголовки кнопок расположены слишком близко друг к
другу, используйте UIBarButtonSystemItemFixedSpace чтобы добавить нужное
расстояние между ними. (Чтобы узнать больше об этой постоянной, см.
UIBarButtonItem Class Reference.)

Кнопки Панели Инструментов и Панели Навигации

iOS предоставляет множество кнопок панели инструментов и панели навигации,


которые используются во встроенных приложениях. Чтобы узнать, как
спроектировать индивидуализированные иконки панели, см. Иконки для
Использования в Панелях. Элементы в панелях инструментов и навигации можно
окрасить используя свойство tintColor.

Чтобы определить, какие названия символов использовать для определения кнопок,


описанных в Таблице 41-1, см. документацию для UIBarButtonSystemItem в
UIBarButtonItem Class Reference.

ВАЖНО

Как и со всеми стандартными кнопками и иконками, важно, чтобы вы основывали


использование кнопки на её семантическом значении, а не на внешнем виде. Это
поможет пользовательскому интерфейсу вашего приложения иметь смысл, даже если
кнопка, связанная с определённым значением, меняет внешний вид.

Кнопка Название Значение

Открывает модальное окно, в котором


отображается список предоставленных системой
Действие
и приложением действий, работающих с
текущим контекстом.

Открывает лист действий, который отображает


Камера
выбор фотографий в режиме камеры.

Открывает новое окно сообщения в режиме


Создать
редактирования.

Показывает закладки, свойственные


Закладки
приложению.

Поиск Отображает поле поиска.


Кнопка Название Значение

Добавить Создаёт новый элемент.

Корзина Удаляет текущий элемент.

Передвигает или направляет элемент к месту


Организовать назначения внутри приложения, например, в
папку.

Посылает или направляет элемент в другое


Ответить
место.

Обновляет содержимое (используется только при


Обновить необходимости, или же обновляется
автоматически).

Начинает воспроизведение медиафайлов или


Воспроизвести
слайдов.

Ускоренная Перематывает воспроизведение медиафайла или


Перемотка слайдов.

Приостанавливает воспроизведение медиафайла


Пауза или слайдов (имейте ввиду: заключает в себе
сохранение контекста).

Перематывает воспроизведение медиафайла или


Перемотка
слайдов назад.

Таблица 41-1 Стандартные кнопки, доступные для использования в панелях


инструментов или навигации

В дополнение к кнопкам, показанным в Таблице 41-1, вы также можете использовать


системные кнопки Редактировать, Отменить, Сохранить, Готово, Повторить и
Отменить, чтобы предоставить редактирование или другого рода воздействие на
содержимое в вашем приложении. Внешний вид каждой из этих кнопок предоставлен
её заголовком. Чтобы определить, какие названия символов использовать для
определения кнопок, см. документацию для UIBarButtonSystemItem в UIBarButtonItem
Class Reference.

В конце-концов, вы также можете использовать в панели инструментов


предоставленную системой кнопку "Информация":

Панель Вкладок

Панель Вкладок предоставляет пользователям возможность переключаться между


разными подзадачами, окнами или режимами в приложении.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Панель вкладок содержится в контроллере панели вкладок, который является


объектом, управляющим отображением набора индивидуализированных окон. Чтобы
узнать больше о проектировании панели вкладок в вашем коде, см. Tab Bar
Controllers и UITabBar.

Панель вкладок:

 Полупрозрачная

 Всегда отображается у нижней границы экрана

 В горизонтальном компактном (compact) режиме отображает не более пяти


вкладок одновременно (если количество вкладок больше, панель вкладок
отображает четыре вкладки и добавляет вкладку "Больше", которая открывает
дополнительные вкладки в списке)

 Сохраняет одинаковую высоту во всех ориентациях

 Может отображать на панели наклейку для сообщения соответствующей


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

В целом, используйте панель вкладок, чтобы организовать информацию на уровне


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

Не используйте панель вкладок, чтобы предоставить пользователям элементы


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

Не удаляйте вкладку, когда её функция доступна. Если вы в некоторых случаях


удаляете вкладку, а в некоторых нет, вы делаете пользовательский интерфейс вашего
приложения нестабильным и непредсказуемым. Лучшим решением является гарантия
того, что все вкладки работают, но предоставить при этом объяснение, почему
содержимое вкладки недоступно. Например, если у пользователя нет никаких песен
на устройстве iOS, вкладка Песни в приложении Музыка отображает экран, который
объясняет, как загрузить песни.

Рассмотрите использование наклеек на иконках панели вкладок для ненавязчивой


коммуникации. Вы можете отобразить наклейку на иконке панели вкладок, чтобы
сообщить о наличии новой информации, связанной с определённым окном или
режимом.

В горизонтальном обычном (regular) режиме мы можете использовать панель вкладок


во вспомогательном окне или дополнительной области контроллера разделённого
окна. Поступайте таким образом для переключения между вкладками или
фильтрации содержимого внутри этого окна. Однако всегда лучше использовать
сегментированный элемент управления у нижней границы вспомогательного окна
или области контроллера окна, так как внешний вид сегментированного элемента
управления лучше сочетается с внешним видом этих элементов пользовательского
интерфейса. (Для получения большей информации об использовании
сегментированного элемента управления, см. Сегментированный Элемент
Управления.)
Избегайте загруженности панели вкладок слишком большим количеством вкладок.
Расположение слишком большого количества вкладок на панели может вызвать
сложность для пользователя при нажатии именно на ту, которая ему нужна. И при
добавлении каждой новой вкладки вы делаете приложение более сложным.

В горизонтальном обычном (regular) режиме избегайте создания вкладки "Больше". В


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

Насколько возможно, отображайте одинаковые вкладки в каждой ориентации.


Хорошо, если вы можете дать пользователям ощущение визуальной стабильности
посредством отображения одинаковых вкладок в каждой ориентации. В
горизонтальном обычном (regular) режиме вам, возможно, понадобится поместить в
центр те же вкладки, которые заполняют пространство в горизонтальном компактном
(compact) режиме.

Иконки Панели Вкладок

iOS предоставляет для использования в панелях вкладок стандартные иконки,


показанные в Таблице 41-2. Чтобы узнать, как создавать индивидуализированные
иконки для панели вкладок, см. Иконки для Использования в Панелях. Иконки панели
вкладок можно окрасить используя свойство tintColor.

Чтобы определить, какие названия символов использовать для определения этих


иконок, см. документацию для UITabBarSystemItem в UITabBarItem Class Reference.

ВАЖНО

Как и со всеми стандартными кнопками и иконками, важно, чтобы вы основывали


использование иконки на её семантическом значении, а не на внешнем виде. Это
поможет пользовательскому интерфейсу вашего приложения иметь смысл, даже если
иконка, связанная с определённым значением, меняет внешний вид.

Иконка Название Значение

Показывает закладки, свойственные


Закладки
приложению.
Иконка Название Значение

Контакты Показывает контакты.

Загрузки Показывает загрузки.

Показывает определённое пользователем


Избранное
избранное.

Показывает содержимое, популярное в


Популярное
приложении.

История Показывает историю действий пользователя.

Показывает дополнительные элементы


Больше
панели вкладок.

Новейшее Показывает самый новый элемент.

Самое Показывает наиболее часто просматриваемые


просматриваемое пользователями элементы.

Показывает элементы, к которым


Недавнее пользователь осуществлял доступ за весь
период использования приложения.

Поиск Вводит режим поиска.

Показывает элементы с самым высоким


Высокий рейтинг
рейтингом по мнению пользователя.

Таблица 41-2 Стандартные иконки для использования во вкладках панели


вкладок

Панель Поиска

Панель поиска принимает текст от пользователей, который может быть использован


как ввод для поиска (здесь показана с замещающим текстом).
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать, как установить панель поиска в вашем коде, см. UISearchBar. Чтобы
узнать больше об отображении панели поиска, см. UISearchDisplayController.

Панель поиска может отображать необязательные элементы, например:

 Замещающий текст. Такой текст может обозначать функцию элемента


управления (например, "Поиск" как показано выше) или напоминать
пользователям, в каком контексте они выполняют поиск (например, "Google").

 Кнопка Закладок. Эта кнопка обеспечивает короткий путь к информации,


которую пользователи хотят с лёгкостью найти снова. Например, кнопка
Закладки в поисковом режиме приложения Карты предоставляет доступ к
месту, отмеченному закладкой, недавним поискам и контактам.

Кнопка Закладки видна, только когда в панели поиска нет введённого пользователем
или незамещающего текста. Когда в панели поиска присутствует такой текст,
появляется кнопка Очистить, чтобы пользователи могли его убрать.

 Кнопка Очистить. Большинство панелей поиска включают в себя кнопку


Очистить, которая позволяет удалить содержимое панели поиска одним
касанием.

Если панель поиска содержит какой-либо незамещающий текст, становится видно


кнопку Очистить, чтоб пользователи могли удалить его. Если в панели поиска
отсутствуюет введённый пользователем или незамещающий текст, кнопка Очистить
скрыта.

 Иконка списка результатов. Эта иконка показывает наличие результатов поиска.


Когда пользователи нажимают на иконку списка результатов, приложение
может отобразить результаты их самого последнего поиска.
 Подсказка. Описательный заголовок, имеющий название подсказка, может быть
расположен над панелью поиска. Подсказка — это короткое, полное
предложение, которое предоставляет вводный или соответствующий
приложению контекст для панели поиска.

Используйте панель поиска, чтобы осуществить поиск в вашем приложении. Не


используйте текстовое поле, чтобы осуществить поиск, так как оно не имеет
внешнего вида панели поиска, который ожидают увидеть пользователи.

В iOS 8 и позднее использование UISearchController упрощает размещение панели


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

Выберите стиль панели поиска, который дополняет важность процесса поиска в


вашем приложении. Если поиск является основной функцией вашего приложения, вы
можете использовать выдающийся стиль. Если пользователям не нужен поиск
слишком часто, вы можете использовать незначительный стиль.

Выдающийся стиль панели поиска (показан в приложении Почта)

Незначительный стиль панели поиска (показан в приложении Музыка)

Панель Объёма и Содержания

Панель объёма и содержания, доступная только совместно с панелью поиска,


помогает пользователям определить объём и содержание поиска.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)


Чтобы узнать больше о том, как установить панель поиска и панель объёма и
содержания в вашем коде, см. UISearchBar.

Когда присутствует панель поиска, панель объёма и содержания может появиться


рядом с ней. Панель объёма и содержания имеет такой же внешний вид, как и тот,
который вы определяете для панели поиска.

Отображение панели объёма и содержания может быть полезно, когда существуют


точно определённые или типичные категории, которые пользователи, возможно,
захотят найти. Тем не менее, лучше усовершенствовать результаты поиска, чтобы
пользователям не приходилось ограничивать область поиска.

Обзор Содержимого

Активность

Активность представляет предоставленную системой или индивидуализированную


задачу, доступную через контроллер окна действия (activity view controller), которая
может работать с текущим контекстом.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о том, как установить активность в вашем коде, см. UIActivity
Class Reference. Чтобы узнать, как встроить контроллер окна действия (activity view
controller) в приложение, см.Контроллер Окна Действия (activity view controller).

Расширения Действие и Поделиться также отображаются в контроллере окна


действия (activity view controller). Чтобы узнать больше об этих расширениях, см.
Расширения Поделиться и Действие.

Активность:

 Это индивидуализированный объект, представляющий задачу, которую может


выполнить приложение во время его использования людьми

 Представлена иконкой, похожей на иконку для использования в панели


Пользователи инициируют активность посредством нажатия на её иконку в
контроллере окна действия (activity view controller). В ответ активность либо
немедленно выполняет задачу, либо, если задача сложная, может запросить больше
информации перед выполнением задачи.

Используйте активность, чтобы предоставить пользователям доступ к


индивидуализированным услугам или задачам, которые может выполнить ваше
приложение. Имейте ввиду, что IOS предоставляет несколько встроенных
активностей и расширений приложения, например, Печать, Twitter, Сообщения и
AirPlay. Вам не нужно создавать индивидуализированную активность, которая
выполняет встроенную задачу.

Создайте лаконичное шаблонное изображение, представляющее вашу задачу.


Шаблонное изображение — это изображение, которое iOS использует в качестве
трафарета для создания окончательной иконки, которую видят пользователи. Чтобы
создать шаблонное изображение, которое будет хорошо выглядеть в окончательной
иконке, следуйте этим рекомендациям:

 Используйте чёрный или белый цвет с соответствующей альфа-прозрачностью.

 Не используйте смещённую отбрасываемую тень.


 Используйте сглаживание цветов.

Шаблонное изображение активности должно быть размещено в области размером 70


x 70 пикселей (высокое разрешение).

Создайте заголовок активности, который точно описывает вашу задачу. Заголовок


отображается над иконкой активности в контроллере окна действия (activity view
controller). Наилучшим является короткий заголовок, так как он лучше выглядит на
экране и его легче найти. Если заголовок слишком длинный, iOS сначала уменьшит
текст и потом, если заголовок всё еще будет длинным, сократит его. В целом,
хорошей идеей является не включать в заголовок активности название вашей
компании или товара.

Контроллер Окна Действия (Activity View Controller)

Контроллер Окна Действия (Activity View Controller) представляет временное


отображение списка предоставленных системой и индивидуализированных задач,
которые могут действовать в соответствии с определённым содержимым.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о том, как установить контроллер окна действия (activity view
controller) в вашем коде, см. UIActivityViewController Class Reference. Чтобы узнать,
как создать активность, предоставляющую индивидуализированную задачу, см.
Активность.

Контроллер окна действия (activity view controller):

 Отображает изменяющийся список задач, которые пользователи могут


выполнить в определённом контексте
 Может отображаться в листе действия или вспомогательном экране в
зависимости от обстановки

Используйте контроллер окна действия (activity view controller), чтобы предоставить


людям список задач, которые они могут выполнить в определённом каким-либо
образом контексте. Задачи могут быть предоставлены системой, например,
Копировать, Twitter или Печать, либо индивидуализированы. Стандартный способ
использования контроллера окна действия (activity view controller) — позволять
пользователям размещать выбранное содержимое в учётной записи социальной сети.

Не создавайте индивидуализированную кнопку, которая открывает контроллер окна


действия. Люди привыкли получать доступ к системным задачам, когда они
нажимают кнопку Действие. Вам лучше воспользоваться преимуществами этого
привычного поведения и избежать создания альтернативного способа совершать
одно и то же действие, чтобы не вводить пользователей в заблуждение.

Обеспечьте соответствие задач в списке текущему контексту. Вы можете изменить


задачи списка в контроллере окна действия (activity view controller) посредством
исключения системных задач и включения индивидуализированных задач. Например,
чтобы не допустить печати изображения, вы исключаете активность Печать из
контроллера окна действия (activity view controller).

ПРИМЕЧАНИЕ

Вы не можете изменить порядок, в котором расположены системные задачи в


контроллере окна действия (activity view controller). Также, все системные задачи
отображаются над всеми индивидуализированными задачами.

Окно Совокупности Объектов (Collection View)

Окно совокупности объектов (Collection View) управляет упорядоченным набором


элементов и представляет их в индивидуализированном расположении.
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении окна совокупности объектов (collection view) в


вашем коде, см. Collection View Programming Guide for iOS.

Окно совокупности объектов (collection view):

 Может содержать дополнительное окно, которое визуально выделяет


подклассы элементов или предоставляет элементы оформления, такие как
индивидуализированный фон

 Поддерживает индивидуализированные анимационные переходы между


расположениями (по умолчанию, окно совокупности объектов (collection view)
предоставляет анимацию, когда пользователь исправляет, двигает или удаляет
элементы)

 Поддерживает добавление распознавания жестов, чтобы выполнять


индивидуализированные действия. По умолчанию, окно совокупности объектов
(collection view) распознаёт касание (для выбора элемента) и
касание+удержание (чтобы редактировать элемент).

Используйте окно совокупности объектов (collection view), чтобы предоставить


пользователям способ видеть и управлять набором элементов, которому не нужно
отображаться в списке. Так как окно совокупности объектов (collection view) не
требует строго линейного расположения, оно построено подходящим образом для
отображения элементов разного размера.

Окно совокупности объектов (collection view) поддерживает расширенную


индивидуализацию, так что важно избегать создания радикально нового дизайна,
чтобы он не был слишком отвлекающим. Вам нужно, чтобы окно совокупности
объектов (collection view) улучшало задачу пользователя. Вам не нужно, чтобы окно
совокупности объектов (collection view) становилось ключевым моментом
пользовательского опыта. Эти указания помогут вам создать окна совокупности
объектов (collection views), которые оценят пользователи.

Не используйте окно совокупности объектов, когда лучшим выбором является


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

Упростите для людей процесс выбора элемента. Если в вашем окне совокупности
объектов (collection view) для людей сложно нажать на элемент, они с меньшей
вероятностью будут наслаждаться вашим приложением. Как и со всеми объектами
пользовательского интерфейса, на которые пользователи захотят нажать, определите
минимальную область для каждого элемента окна совокупности объектов (collection
view) размером 44 x 44 точек.

С осторожностью относитесь к динамическим изменениям в расположении. Окно


совокупности объектов (collection view) позволяет вам изменять расположение
элементов, когда пользователи просматривают их и взаимодействуют с ними. Если
вы решили внести динамические изменения в расположение окна совокупности
объектов (collection view), удостоверьтесь, что они имеют смысл и пользователям
легко их уловить. Изменение расположения окна совокупности объектов (collection
view) без очевидной причины может создать у пользователей впечатление, что
приложение непредсказуемо и сложно в использовании. И если текущий фокус или
контекст теряется во время динамических изменений в расположении, пользователи,
вероятно, почувствуют, что они больше не в состоянии управлять вашим им.

Контроллер Окна Содержимого (Container View Controller)


Контроллер Окна Содержимого (Container View Controller) управляет и представляет
набор дочерних окон (или контроллеров окна) индивидуализированным образом.
Примерами системных контроллеров являются контроллеры окон панели вкладок,
навигационные контроллеры окон и контроллеры разделённого окна (вы можете
узнать больше об этих элементах в разделах Панель Вкладок, Панель Навигации и
Контроллер Разделённого Окна).

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше об установке индивидуализированного контроллера окна


содержимого в вашем коде, см. UIViewController Class Reference.

Контроллер окна содержимого не имеет предопределённого внешнего вида или


поведения.

Используйте контроллер окна содержимого, чтобы представить содержимое,


посредством которого пользователи перемещаются индивидуализированным
способом.

Спросите себя, является ли уникальный контроллер окна содержимого действительно


необходимым. Пользователи привыкли к внешнему виду и поведению стандартных
контроллеров окна содержимого, таким как контроллер разделённого окна или
контроллер окна панели вкладок. Вам нужно удостовериться, что потенциальные
преимущества уникального контроллера окна содержимого превосходят тот факт,
что пользователи не распознают его или сразу не поймут, как он работает.

Убедитесь, что ваш уникальный контроллер окна содержимого работает в обеих


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

В общем, избегайте кричащих переходов между окнами. При использовании


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

Окно Изображения

Окно изображения отображает одно изображение или анимационный ряд


изображений.
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше об установке окна изображения в вашем коде, см. UIImageView.

Окно изображения:

 Не имеет предопределённого внешнего вида и не предусматривает


пользовательского взаимодействия по умолчанию

 Проверяет свойства и данного изображения, и изображения его источника,


чтобы определить, должно ли изображение быть растянутым,
масштабированным, расположенным по размеру или прикреплено к
определённой области

В iOS 7 и позднее окно изображения, которое содержит шаблонное изображение,


применяет текущий цветовой оттенок к этому изображению.

Насколько возможно, обеспечьте, чтобы у всех изображений в окне изображения был


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

Окно Карты

Окно карты представляет географические данные и поддерживает большинство


функций, предоставленных встроенным приложением Карты (показано ниже в
приложении Фотографии).
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше об установке окна карты в вашем коде, см. MapKit Framework
Reference.

Окно карты:

 Отображает географическую область, используя стандартные данные карт,


изображения спутниковых данных или и то, и другое

 Может отображать примечания (которые помечают отдельные точки) и оверлей


(который изображает путь или двухмерные области)

 Поддерживает и программное, и пользовательское масштабирование и


панорамирование

Используйте окно карты, чтобы предоставить пользователям интерактивный вид


географической области. Если вы разрабатываете приложение, составляющее
маршрут, используйте окно карты для отображения маршрута пользователя (для
большей информации о создании приложения для составления маршрута, см.
Составление Маршрута).
В общем, позвольте пользователям взаимодействовать с картой. Люди уже знакомы с
тем, как взаимодействовать со встроенным приложением Карты, и они ожидают, что
смогут взаимодействовать с вашими картами похожим образом.

Используйте стандартный цвет булавок соответствующим образом. Булавка


показывает местоположение особо важных точек на вашей карте. Люди уже знакомы
с цветами булавок во встроенном приложении Карты, так что лучше всего избегать
переопределения значения этих цветов в вашем приложении. Когда вы используете
стандартные цвета булавок, удостоверьтесь, что используете их следующим образом:

 Используйте красный цвет для места назначения

 Используйте зелёный цвет для начальной точки

 Используйте фиолетовый цвет для точек, выбранных пользователем

Контроллер Окна Страницы (Page View Controller)

Контроллер окна страницы (Page view controller) использует один или два стиля
осуществления переходов через многостраничное содержимое. Таким образом
выглядит переворот страницы в iOS Simulator:

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)


Чтобы узнать больше об установке контроллера окна страницы в вашем коде, см.
Page View Controllers.

Контроллер окна страницы:

 Не имеет предопределённого внешнего вида для прокручиваемого стиля

Для стиля переворачивания страниц контроллер окна страницы может добавить


внутренний внешний вид корешка книжного блока между парами страниц

 Анимирует переход от одной страницы к другой в зависимости от выбранного


стиля

В стиле прокручивания текущая страница прокручивается до следующей. В стиле


переворачивания текущая страница переворачивается как в книге или записной
книжке.

Используйте контроллер окна страницы, чтобы представить содержимое, к которому


пользователи имеют доступ линейно (как в тексте рассказа) или содержимое, которое
естественным образом разбито на кусочки (как в календаре).

При необходимости, создайте для пользователей уникальный способ доступа к


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

Вспомогательное Окно (Popover)

Вспомогательное окно (popover) — это временное окно, которое может открываться,


когда пользователь нажимает на элемент управления или на область внутри экрана.
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

В iOS 8 и позднее вы используете UIPopoverPresentationController, чтобы


предоставить вспомогательное окно. UIPopoverPresentationController выделяет
представителя, который позволяет вам редактировать стиль отображения
содержимого вспомогательного окна, чтобы встроить его в текущий режим
отображения. Например, в горизонтальном обычном (regular) режиме ваше
содержимое может отображаться внутри вспомогательного окна. В горизонтальном
компактном (compact) режиме ваше содержимое может отображаться в
полноэкранном модальном окне.

Вспомогательное окно (popover):

 Является законченным модальным окном


 В горизонтальном обычном (regular) режиме отображает стрелку, которая
определяет место появления

 Имеет полупрозрачный фон, который смазывает содержимое за ним

 Может содержать широкий ряд объектов и окон, таких как:

o Таблица, изображение, карты, текст, веб-страница или уникальные окна

o Панели навигации, панели инструментов или панели вкладок

o Элементы управления или объекты, которые действуют соответственно


объектам в текущем окне приложения

(По умолчанию, экранные таблицы, панели навигации и панели инструментов во


вспомогательном окне имеют прозрачный фон, чтобы размытие вспомогательного
окна могло просвечивать.)

В горизонтальном обычном (regular) режиме лист действия всегда отображается


внутри вспомогательного окна.

Используйте вспомогательное окно для отображения дополнительной информации


или списка элементов, связанных с основным или выбранным объектом.

ПРИМЕЧАНИЕ

Указания в этом разделе охватывают пользовательский интерфейс и


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

Избегайте предоставления кнопки "убрать вспомогательное окно" Вспомогательное


окно должно закрываться автоматически, когда его присутствие больше не нужно.
Чтобы определить, когда отображение вспомогательного окна больше не является
необходимым, рассмотрите следующие ситуации:

Если вспомогательное
окно... Делайте следующее..

Предоставляет опции, Закройте вспомогательное окно, как только люди


Если вспомогательное
окно... Делайте следующее..

которые влияют на сделали выбор или когда они произвели касание


главное окно, но не за его границами, включая элемент управления,
активирует инспектор который открывает вспомогательное окно.

Закройте вспомогательное окно, когда люди


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

Закройте вспомогательное окно, когда люди


завершили или отменили задачу посредством
нажатия на кнопку вспомогательного окна, такую
как Done или Cancel.

В этой ситуации вы можете не закрывать


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

Как правило, сохраняйте работу пользователей, когда они производят касание за


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

Убедитесь, что пользователи могут использовать вспомогательное окно, не видя


содержимого приложения за ним. Вспомогательное окно скрывает содержимое за
ним, и пользователи не могут перенести это окно в другое место.

Обеспечьте, чтобы одновременно на экране отображалось только вспомогательное


окно. Вам не следует отображать более одного вспомогательного окна (или
уникального окна, которое выглядит и функционирует как вспомогательное окно)
одновременно. В частности, вам следует избегать одновременного отображения
каскада или иерархии вспомогательных окон, в которых одно вспомогательное окно
всплывает из предыдущего.

Не отображайте модальное окно поверх вспомогательного. За исключением


предупреждения, ничего не должно отображаться поверх вспомогательного окна.

По возможности, позволяйте людям закрывать одно вспомогательное окно и


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

Избегайте создания слишком большого вспомогательного окна. Вспомогательное


окно не должно перекрывать весь экран. Вместо этого оно просто должно быть
достаточно большим, чтобы отображать свое содержание и по-прежнему указывать
на то место, откуда оно появилось. Высота вспомогательного окна не ограничена, так
что вы можете использовать его для отображения длинного списка элементов. Тем не
менее, как правило, вам следует избегать прокручивания вспомогательного окна,
предоставляющего задачу. Имейте ввиду, что система может отрегулировать высоту
и ширину вспомогательного окна, чтобы гарантировать, что оно хорошо смотрится
на экране.

Используйте стандартные элементы управления и окна пользовательского


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

Удостоверьтесь, что уникальное вспомогательное окно по-прежнему выглядит как


вспомогательное окно. Хотя достаточно легко настроить визуальные аспекты
вспомогательного окна с помощью UIPopoverBackgroundView API, важно избегать
создания дизайна, который люди не распознают как вспомогательное окно. Если вы
слишком измените внешний вид вспомогательного окна, пользователи не смогут
положиться на свой предыдущий опыт, который может помочь понять принцип
работы вашего приложения.

Будьте осторожны, если вы меняете размер вспомогательного окна в тот момент,


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

Прокручивающееся Окно

Прокручивающееся окно помогает людям видеть содержимое, размер которого


больше границ окна (изображение, показанное ниже и выше, и шире, чем окно,
которое его содержит).

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

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


UIScrollView.

Прокручивающееся окно:
 Не имеет предопределённого внешнего вида

 Активирует временные индикаторы прокручивания при первом появлении или


при взаимодействии пользователей

 Реагирует на скорость и направление жестов, чтобы открыть содержимое


естественным для людей образом

Когда пользователи перетаскивают содержимое в прокручивающемся окне,


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

 Может работать в режиме страниц, в котором каждый жест перетаскивания или


перелистывания открывает одну определённую приложением страницу

Используйте прокручивающееся окно, чтобы предоставить людям доступ к большим


окнам или к большому количеству окон в ограниченном пространстве.

Поддерживайте работу масштабирования надлежащим образом. Если это имеет


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

Рассмотрите использование управления страницами вместе с прокручивающимся


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

Если вы используете управление страницами с прокручивающимся окном в


постраничном режиме, хорошей идеей является отключить индикатор
прокручивания, который находится на одной оси с управлением страницами.
Удаление индикатора прокручивания концентрирует внимание на управлении
страницами и предоставляет людям однозначный способ просмотра содержимого.
Для получения большей информации об использовании управления страницами в
вашем приложении см. Управление Страницами.

Как правило, отображайте только одно прокручивающееся окно в каждый момент


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

Контроллер Разделённого Окна

Контроллер разделённого окна — это полноэкранный контроллер окна, который


управляет демонстрацией двух дочерних контроллеров окон.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Каждый дочерний контроллер окна отвечает за управление отображением одной


панели. Сам контроллер разделённого окна демонстрирует эти дочерние
контроллеры и управляет переходами между различными ориентациями. Чтобы
узнать больше об установке контроллера разделённого окна в вашем коде, см.
UISplitViewController Class Reference и Split View Controllers.

В iOS 7 и ранее контроллер разделённого окна был доступен только на iPad.

По умолчанию, контроллер разделённого окна использует текущий size class, чтобы


определить, как расположить дочерние контроллеры. Например, контроллер
разделённого окна:

 Пробует отобразить обе панели параллельно в горизонтальном обычном


(regular) режиме

 Может отображать главную панель поверх дополнительной или может скрыть


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

Вы можете повлиять на расположение панелей, если запросите контроллер


разделённого окна обратить внимание на предпочтительное расположение, которое
вы выбрали для конкретного режима отображения.

Контроллер разделённого окна может содержать широкий ряд объектов и окон,


таких как:

 Таблица, изображение, карты, текст, веб-страница или уникальные окна

 Панели навигации, панели инструментов или панели вкладок

ПРИМЕЧАНИЕ

Не смотря на то, что основная панель часто называется ведущая панель, а


дополнительная панель часто называется панель "подробно", эта взаимосвязь в коде
не обязательна.

Используйте контроллер разделённого окна, чтобы отобразить постоянную


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

Избегайте создания дополнительной панели, которая будет более узкой чем главная
панель. Если дополнительная панель будет уже чем главная панель, контроллер
разделённого окна больше не будет заполнять ширину экрана и, таким образом,
общий внешний вид станет несбалансированным.

Избегайте отображения панели навигации в обеих панелях одновременно. Такой


способ расположения усложнит для пользователей процесс различия между двумя
панелями.

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

Предоставьте людям альтернативные способы доступа к главной панели, если


необходимо. По умолчанию, только дополнительная панель отображается в
горизонтальном компактном (compact) режиме, и вы предоставляете пользователям
кнопку (обычно расположенную в панели навигации) чтобы открыть и скрыть главную
панель. Контроллер разделённого окна также поддерживает жест смахивания для
осуществления действия открыть/скрыть. Пока ваше приложение не поддерживает
жест смахивания для выполнения других функций, вы должны дать пользователям
производить жест смахивания для доступа к главной панели.

Экранная Таблица

Экранная таблица предоставляет данные в прокручивающемся списке с одной


колонкой и множеством строк.
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении экранной таблицы в вашем коде, см. Table View
Programming Guide for iOS и UITableView.

Экранная таблица:

 Отображает данные в строках, которые могут подразделяться на разделы или


группы

 Предоставляет элементы управления, позволяющие пользователям добавлять


или удалять строки, выбирать несколько строк, видеть больше информации об
элементе строки или открывать другую экранную таблицу

iOS выделяет два стиля экранных таблиц:

Простая таблица. В простой таблице строки могут быть разделены на секции с


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

В обоих стилях экранная таблица становится слегка выделенной при нажатии


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

iOS включает в себя некоторые элементы экранной таблицы, которые могут


расширить функциональность экранных таблиц. Если не указано иначе, эти элементы
подходят для использования только в экранных таблицах.

Элемент
экранной
таблицы Название Значение

Галочка Оповещает о том, что строка выбрана.

Индикатор Отображает другую таблицу, связанную со


раскрытия строкой.

Отображает дополнительные детали строки


Кнопка в новом окне (чтобы получить информацию
Раскрытия о том, как использовать этот элемент за
Деталей пределами таблицы, см. Вспомогательное
Окно (Popover)).

Изменение Оповещает, что строку можно перетащить в


порядка строк другую область таблицы.

Добавить
Добавляет новую строку в таблицу.
строку

Элемент
управления В редактируемом контексте открывает и
кнопкой скрывает кнопку удаления в строке.
удаления

Кнопка
Удаляет строку.
удаления

В дополнение к соответствующим таблице элементам, указанным выше, iOS выделяет


элемент управления обновлением, который предоставляет пользователям
возможность обновлять содержимое таблиц. Чтобы узнать больше об использовании
элемента управления обновлением в таблице вашего приложения, см. Элемент
Управления Обновлением.

iOS выделяет четыре стиля ячеек, которые подходят большинству распространённых


шаблонов расположения строк и в простых и сгруппированных таблицах. Каждый
стиль ячеек наилучшим образом подходит для отображения разного типа
информации.

ПРИМЕЧАНИЕ

Программно эти стили применимы к ячейке экранной таблицы, которая является


объектом, сообщающим таблице, как отобразить её строки.

По умолчанию (UITableViewCellStyleDefault). Стиль ячеек по умолчанию включает в


себя дополнительное изображение с левого края строки, за которым следует
выровненный по левому краю заголовок.

Стиль по умолчанию подходит для отображения списка элементов, которым не


нужно отображение дополнительной информации.

Подзаголовок (UITableViewCellStyleSubtitle). Стиль подзаголовка включает в себя


дополнительное изображение с левого края строки, за которым следует
выровненный по левому краю заголовок на одной строке и выровненный по левому
краю подзаголовок строкой ниже.

Выравнивание заголовков текста по левому краю упрощает просмотр списка. Такой


стиль ячеек таблицы хорошо работает, когда элементы списка похожи, так как
пользователи могут использовать дополнительную информацию в дополнительных
заголовках текста, что помогает различить элементы, названные в заголовках текста.
Значение 1 (UITableViewCellStyleValue1). Стиль со значением 1 отображает
выровненный по левому краю заголовок с расположенным на этой же строке,
выровненным по левому краю заголовком в ненасыщенном шрифте.

Значение 2 (UITableViewCellStyleValue2). Стиль со значением 2 отображает


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

В расположении со значением 2 чёткое вертикальное поле между текстом и деталями


помогает пользователям сфокусироваться на первых словах дополнительных
заголовков текста.

ПРИМЕЧАНИЕ

Все четыре стандартных стиля ячеек таблицы делают возможным добавление


элементов экранной таблицы, таких как галочка или индикатор раскрытия.
Добавление этих элементов увеличивает ширину доступных ячеек для заголовков и
подзаголовков.

Используйте экранную таблицу, чтобы отобразить большое или маленькое количество


информации аккуратно и эффективно. Например:

 Предоставлять список опций, из которых пользователи могут выбрать. Вы


можете использовать галочку, чтобы показать пользователям выбранные опции
в списке.

Используйте простую или сгруппированную таблицу, чтобы отобразить список


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

 Отображать иерархическую информацию. Простой стиль таблицы хорошо


подходит для отображения иерархии информации. Каждый элемент списка
может вести к различным подклассам информации, отображаемым в другом
списке. Пользователи следуют по пути через иерархию посредством выбора
одного элемента в каждом последующем списке. Индикатор раскрытия
сообщает пользователям, что нажатие на любую область строки открывает
подкласс информации в новом списке.

 Отображать схематически сгруппированную информацию. Оба стиля экранных


таблиц позволяют вам предоставить контекст посредством отображения
верхних и нижних колонтитулов между секциями информации.

Вы также можете использовать таблицу верхнего-нижнего колонтитулов, это


постоянная UITableViewHeaderFooterView, чтобы отобразить текст или
индивидуализированное окно в верхнем или нижнем колонтитулах. Чтобы узнать,
как использовать таблицу верхнего-нижнего колонтитулов в вашем коде, см.
UITableViewHeaderFooterView Class Reference.

При использовании экранных таблиц следуйте этим указаниям:

Всегда предоставляйте обратную связь, когда пользователи выбирают элемент


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

Если содержимое таблицы обширное и сложное, избегайте ожидания того, чтобы все
данные стали доступны перед тем, как что-либо отобразить. Вместо этого сразу же
заполните строки на экране текстовыми данными и отобразите более сложные
данные, такие как изображения, как только они станут доступны. Этот способ сразу
же даёт пользователям полезную информацию и увеличивает реакцию восприятия
вашего приложения.

Отображайте "старые" данные в то время, пока ждете загрузки новых данных. Хотя
этот метод не рекомендуется использовать в приложениях, которые содержат часто
изменяющиеся данные, он может помочь более статичным приложениям сразу же
предоставить что-то полезное. Перед тем, как вы решите сделать это, определите,
как часто изменяются данные и насколько сильно пользователи зависят от быстрого
просмотра новой информации.

Если данные сложные или медленно загружаются, предоставьте пользователям


какой-то знак, что загрузка данных находится в процессе. Если таблица содержит
только сложные данные, то будет очень сложно быстро отобразить что-то полезное.
В таких редких ситуациях очень важно избегать отображения пустых строк, потому
что это может вызвать предположение, что приложение "зависло". Вместо этого
таблица должна отображать крутящийся индикатор активности, с каким-либо
информативным текстом (например, "Загрузка..."), выровненным по центру экрана.
Это предоставляет пользователям обратную связь, которая даёт знать, что процесс
продолжается.

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

Насколько возможно, используйте короткие заголовки текстов, чтобы избежать


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

Создайте уникальный стиль ячеек таблицы, если вы хотите расположить строки


таблицы необычным способом. Лучше создать уникальный стиль ячеек таблицы, чем
многозначительно изменять стандартный. Чтобы узнать, как создать свои
собственные ячейки, см. Customizing Cells.

Текстовое Окно (Text View)

Текстовое окно принимает и отображает несколько строк атрибутивного текста.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении текстового окна в вашем коде, см. UITextView.

Текстовое окно:

 Прямоугольной формы любой высоты

 Поддерживает прокручивание, когда содержимое слишком большое, чтобы


уместиться в пределы окна

 Поддерживает индивидуализированные шрифты, цвета и выравнивание (по


умолчанию текстовое окно отображает выровненный по левому краю
системный шрифт чёрного цвета)

 Может поддерживать редактирование, в случае которого появляется


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

Всегда будьте уверены, что текст легко прочитать. Хотя вы можете использовать
строки с атрибутами для комбинирования нескольких шрифтов, цветов и
выравнивания необычным способом, важно сохранять читабельность текста. Хорошей
идеей является поддержка динамического типа (Dynamic Style) и использование
метода UIFont preferredFontForTextStyle, чтобы текст отображался в текстовом окне.
Для получения некоторых указаний касательно поддержки динамического типа
(Dynamic Type), см. Текст всегда должен быть разборчивым; для программной
информации см. Текстовые Стили.

Установите разные типы клавиатур, чтобы обеспечить разные типы содержимого,


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

iOS предоставляет несколько типов клавиатур, каждая из которых спроектирована


для того, чтобы способствовать различным типам ввода. Чтобы узнать о доступных
типах клавиатур, см. документацию для UIKeyboardType. Чтобы узнать больше об
управлении клавиатурой в вашем приложении, читайте Managing the Keyboard.

Веб-Окно (Web View)

Веб-окно представляет собой область, которая может отображать насыщенное HTML


содержимое (здесь показано между панелью навигации и панелью инструментов в
Почте на iPhone).
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении веб-окна в вашем коде, см. UIWebView.

Веб-окно:

 Отображает веб-содержимое

 Выполняет некоторую автоматическую обработку веб-содержимого, такую как


преобразование телефонного номера в телефонную ссылку

Если у вас есть веб-страница или веб-приложение, вы можете решить использовать


веб-окно, чтобы реализовать простое приложение iOS, которое предоставит
"упаковку" для вашей веб-страницы или приложения. Если вы планируете
использовать веб-окно для доступа к веб-содержимому, управляемому вами,
обязательно прочтите Safari Web Content Guide.

Избегайте использования веб-окна для создания приложения, которое будет


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

Элементы Управления

Индикатор Активности

Индикатор активности демонстрирует, что задача или процесс находится в действии


(здесь показан с текстовой надписью).

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать, как выделить индикатор активности в вашем коде, см.


UIActivityIndicatorView Class Reference.

Индикатор активности:

 Вращается во время выполнения задачи и исчезает, когда задача завершена

 Не подразумевает взаимодействия
Используйте индикатор активности в панели инструментов или в главном окне, чтобы
показать процесс задачи и не указывайте на то, когда процесс будет завершён.

Не отображайте неподвижный индикатор активности. Пользователи соотносят


неподвижный индикатор активности с тем, что процесс "завис".

Используйте индикатор активности, чтобы удостоверить пользователей, что их


задача или процесс не "зависли". Иногда важнее просто заверить пользователей, чем
говорить им о моменте окончания процесса.

Индивидуализируйте индикатор активности, чтобы он гармонично смотрелся с


окном, в котором отображается. Если необходимо, соотнесите размер и цвет
индикатора активности с фоном окна, в котором он отображается.

Кнопка Добавления Контакта (Contact Add Button)

Кнопка добавления контакта позволяет пользователю добавить существующий


контакт в текстовое поле или другое основанное на отображении текста окно.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать о выделении Кнопки Добавления Контакта в вашем коде, см. UIButton.

Кнопка Добавления Контакта:

 Отображает список контактов пользователя

 Помогает пользователям добавить контакт в окно, которое содержит Кнопку


Добавления Контактов

Используйте Кнопку Добавления Контактов, чтобы предоставить пользователям


простой путь для доступа к контактам без использования клавиатуры. Например,
пользователи могут нажать кнопку Добавления Контактов в поле "Кому" в окне
создания письма приложения Почта, вместо ввода имени адресата.

Так как кнопка Добавления Контакта работает как альтернатива вводу контактной
информации, не рекомендуется использовать эту кнопку в окне, которое не
поддерживает ввода клавиатуры.

Выбор Даты (Date Picker)


Выбор даты отображает компоненты даты и времени, такие как часы, минуты, дни и
года.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать, как выделить выбор даты в вашем коде, см. UIDatePicker.

Выбор даты:

 Отображает до четырёх независимых колёс, каждое из которых отображает


величины отдельной категории, такие как месяц или час

 Использует тёмный текст для отображения текущей величины в середине окна

 Имеет неизменяемый размер (выбор даты имеет такой же размер как и


клавиатура iPhone)

 Имеет четыре режима, каждый из которых отображает колёса, содержащие


набор разных значений:

o Дата и время. Режим даты и времени (режим по умолчанию) отображает


колеса для данных календарной даты, часа и минут с опционально
дополнительным колесом определения часа до и после полудня (AM/PM).

o Время. Режим времени отображает колеса для значений часа и минут с


опционально дополнительным колесом определения часа до и после
полудня (AM/PM).

o Дата. Режим даты отображает колеса для значений месяца, дня и года.

o Таймер обратного отсчёта. Режим таймера обратного отсчета отображает


колеса со значениями для часа и минут. Вы можете определить
максимальную длительность отсчета до 23 часов и 59 минут.

Используйте выбор даты, чтобы позволить пользователям выбирать (вместо того,


чтобы набирать текст вручную) данные по дате и времени, которые состоят из
нескольких частей, таких как день, месяц и год.
Насколько возможно, отображайте выбор даты встроено с содержимым. Лучше всего,
когда пользователи могут избежать перехода к другому окну для использования
выбора даты. В горизонтальном обычном (regular) режиме выбор даты может
отображаться внутри вспомогательного окна или встроено в содержимое.

Если имеет это имеет смысл в вашем приложении, измените интервалы в колесе для
установки минут. По умолчанию колесо минут отображает 60 значений (от 0 до 59).
Если вам нужно отобразить крупноячеистость опций выбора, вы можете установить
колесо минут для отображения большего минутного интервала, при условии, что этот
интервал будет кратен 60. Например, вы можете отобразить 15-ти минутные
интервалы 0, 15, 30 и 45.

Кнопка Раскрытия Деталей

Кнопка Раскрытия Деталей открывает дополнительные детали или функции,


соответствующие элементу.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать, как выделить кнопку Раскрытия Деталей в вашем коде, см.
UITableViewCell Class Reference и UIButton.

Кнопка Раскрытия Деталей открывает отдельное окно, которое содержит


дополнительную информацию или функции, связанные с конкретным элементом.

Когда в строке таблицы появляется кнопка Раскрытия Деталей, нажатие на область в


строке не активирует кнопку Раскрытия Деталей. Вместо этого, нажатие выбирает
элемент в строке или приводит к действию, которое определено поведением
приложения.

Обычно, вы используете кнопку Раскрытия Деталей в экранной таблице, чтобы


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

Кнопка Информации (Info Button)

Кнопка информации открывает описание конфигурации приложения, иногда позади


текущего окна.
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении кнопки Информации в вашем коде, см. UIButton.

iOS включает в себя два стиля кнопки Информации: кнопка тёмного цвета, которая
хорошо смотрится на светлом содержимом, и кнопка светлого цвета, которая
хорошо смотрится на тёмном содержимом.

Используйте кнопку Информации для открытия описания конфигурации или опций


вашего приложения. Вы можете использовать тот стиль кнопки Информации, который
лучше всего подходит пользовательскому интерфейсу вашего приложения.

Лейбл (Label)

Лейбл отображает статичный текст.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении лейбла в вашем коде, см. UILabel Class Reference.

Лейбл:

 Отображает любой объём статичного текста

 Не подразумевает взаимодействия с пользователем, за исключением


копирования текста

Используйте лейбл, чтобы назвать или описать части вашего пользовательского


интерфейса или для предоставления коротких сообщений для пользователя. Лейбл
лучше всего подходит для отображения относительно небольшого объёма текста.

Позаботьтесь о том, чтобы ваши лейблы были разборчивыми. Лучше всего


осуществить поддержку динамического типа (Dynamic Type) и использовать метод
UIFont preferredFontForTextStyle, чтобы создать текст для отображения в лейбле. Если
вы выбрали использование уникальных шрифтов, не жертвуйте чёткостью в пользу
причудливых шрифтов или ярких цветов. (Для получения указаний касательно
использования текста в приложении, см. Цвет и Оформление. Чтобы узнать больше о
динамическом стиле (Dynamic Type), см. Текстовые Стили.)

Индикатор Активности Сети (Network Activity Indicator)

Индикатор активности сети отображается в панели статусов и показывает, что


происходит активность сети.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

В вашем коде используйте метод UIApplication networkActivityIndicatorVisible для


управления видимостью индикатора.

Индикатор активности сети:

 Вращается в статус-панели во время активности сети и исчезает, когда


активность прекращается

 Не подразумевает взаимодействия

Отображайте индикатор активности сети, чтобы предоставить обратную связь, если


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

Управление Страницами

Управление страницами определяет количество открытых окон и какое из них


отображается в данный момент (здесь показано в приложении Погода).

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении управления страницами в вашем коде, см.


UIPageControl.

Управление страницами:

 Отображает точку-индикатор для каждого открытого окна в приложении (слева


направо точки отображают порядок, в котором были открыты окна)
 По умолчанию использует непрозрачную точку для отображения текущего
видимого окна, а полупрозрачные точки представляют остальные открытые
окна

 Не позволяет пользователям непоследовательно просматривать окна

 Не уменьшает и не сжимает точки по мере открытия большего количества окон


(если вы попробуете отобразить больше точек, чем умещаются в окне, они
будут обрезаны)

 Не осуществляет навигацию между окнами по умолчанию. Вы должны


обеспечить навигацию между окнами и обновлять управление страницами
надлежащим образом

Используйте управление страницами, когда важнее показать пользователям, сколько


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

Не используйте управление страницами для иерархического отображения окон или


другого сложного расположения. Управление страницами не показывает, как окна
связаны друг с другом, и не отображает, какое окно соотносится с каждой точкой,
так что оно не помогает пользователям в навигации к конкретному окну.

Избегайте отображения слишком большого количества точек. Для пользователей


сложно с первого взгляда посчитать больше 10 точек, а поочередный просмотр более
20 открытых окон требует много времени. Если пользователи открывают более 20
подобных окон в вашем приложении, рассмотрите отображение окон в другом
расположении, которое предоставит больше информации об окнах и осуществит
непоследовательную навигацию.

В вертикальной ориентации разместите индикатор страницы по центру, между


нижним краем открытого окна и нижним краем экрана. В этом положении
управление страницами всегда видно без помех для пользователя.

Выбор (Picker)

Выбор отображает набор значений, из которых пользователь выбирает одно.


ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении выбора в вашем коде, см. UIPickerView Class
Reference.

Выбор:

 Представляет собой обобщённую версию выбора даты (чтобы получить больше


информации о выборе даты, см. Выбор Даты (Date Picker))

 Отображает одно или больше колёс, каждое из которых содержит список


значений

 Использует тёмный текст для отображения текущей величины в середине окна

 Имеет неизменяемый размер (имеет такой же размер как и клавиатура iPhone)

Используйте выбор, чтобы упростить для людей процесс выбора из набора значений.

Как правило, используйте выбор, когда пользователи знакомы со всем набором


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

Насколько возможно, отображайте выбор встроено с содержимым. Лучше всего,


когда пользователи могут избежать перехода к другому окну для использования.

Рассмотрите использование экранной таблицы вместо выбора, если вам нужно


отобразить очень большое количество значений. Это потому, что большая высота
экранной таблицы ускоряет процесс прокручивания.

Окно Прогресса (Progress View)

Окно прогресса показывает прогресс задачи или процесса с известной


длительностью (здесь показано в панели инструментов Почты).
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении окна прогресса в вашем коде, см. UIProgressView
Class Reference.

Окно прогресса:

 Состоит из дорожки, которая заполняется слева направо по мере выполнения


задачи или процесса

 Не подразумевает взаимодействия

iOS выделяет два стиля окна прогресса:

 По умолчанию. Стиль по умолчанию включает в себя незаполненную дорожку


таким образом, чтобы она могла отображаться в области содержимого.

 Панель. Стиль панели не включает в себя незаполненную дорожку, так как


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

Используйте окно прогресса, чтобы предоставить обратную связь о задаче,


длительность которой хорошо известна, особенно когда важно примерно
определить, как много времени займёт выполнение задачи.

Если необходимо, соотнесите внешний вид окна прогресса со стилем вашего


приложения. Посредством индивидуализации окна прогресса вы можете выбрать,
например, уникальный оттенок или изображение и для дорожки, и для заполнения
окна прогресса.

Элемент Управления Обновлением (Refresh Control)

Элемент управления обновлением выполняет инициированное пользователем


обновление содержимого, как правило, в таблице (здесь показан над списком почты).
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении элемента управления обновлением в вашем коде,


см. UIRefreshControl Class Reference.

Элемент управления обновлением:

 Похож на индикатор активности

 Может отображать заголовок

 По умолчанию скрыт до тех пор, пока пользователь не совершит действия


обновления посредством жеста стягивания вниз от верхней границы таблицы

Используйте элемент управления обновлением, чтобы предоставить пользователям


последовательный способ заставить таблицу или другое окно мгновенно обновить
содержимое без ожидания следующего автоматического обновления.

Не прекращайте выполнения автоматического обновления содержимого только


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

Обеспечьте короткий заголовок, только если он добавляет значимости. В частности,


не используйте заголовок, описывающий, как использовать элемент управления
обновлением.

Прямоугольная Кнопка с Закруглёнными Краями (Rounded Rectangle Button)


Прямоугольна Кнопка с Закруглёнными краями не рекомендована для использования
в iOS 7 и позднее. Вместо неё используйте системную кнопку — UIButton типа
UIButtonTypeSystem. Для получения руководящих указаний см. Системная Кнопка.

Сегментированный Элемент Управления (Segmented Control)

Сегментированный Элемент Управления представляет собой линейный набор


сегментов, каждый из которых функционирует как кнопка, способная отображать
разные окна.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении сегментированного элемента управления в вашем


коде, см. UISegmentedControl.

Сегментированный элемент управления:

 Состоит из двух и более сегментов, ширина которых пропорциональна в


зависимости от итогового числа сегментов

 Может отображать текст или изображения

Используйте сегментированный элемент управления для предоставления опций


выбора, являющихся тесно связанными, но взаимоисключающими.

Удостоверьтесь, что на каждый сегмент легко нажать. Чтобы сохранить комфортную


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

По возможности поддерживайте постоянный размер содержимого каждого сегмента.


Так как все сегменты в сегментированном элементе управления равной ширины,
заполнение каких-то сегментов содержимым, а каких-то нет будет выглядеть плохо.

Избегайте совмещения текста и изображений в одном сегментированном элементе


управления. Сегментированный элемент управления может содержать текст или
изображения. Одни сегментированный элемент управления может содержать либо
текст, либо изображения, но не оба сразу. Как правило, лучше всего избегать в одном
сегментированном элементе управления размещения в каких-то сегментах текста, а
в каких-то изображений.
При необходимости измените расположение содержимого в
индивидуализированном сегментированном элементе управления. Если вы
индивидуализируете внешний вид фона сегментированного элемента управления,
проследите за тем, чтобы автоматическое центрирование содержимого элемента
управления по-прежнему выглядело хорошо. Используйте исходные параметры
панели программного интерфейса приложения (API), чтобы разместить содержимое
внутри сегментированного элемента управления (чтобы узнать больше об исходных
параметрах панели, см. индивидуализация внешнего вида программного
интерфейса приложения (API) в UISegmentedControl).

Слайдер (Slider)

Слайдер позволяет пользователям вносить изменения в значения или процесс в


диапазоне разрешённых значений (здесь показан с индивидуализированными
изображениями слева и справа).

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении слайдера в вашем коде, см. UISlider.

Слайдер:

 Состоит из горизонтальной дорожки и кнопки ползунка (круглого элемента


управления, который пользователи могут передвигать)

 Может включать в себя дополнительные изображения, которые выражают


значения слева и справа

 Заполняет положение дорожки между минимальным значением (как правило,


слева) и кнопкой ползунка

Используйте слайдер, чтобы предоставить пользователям точный элемент управления


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

Если это добавляет значимости, создайте уникальный внешний вид кнопки ползунка.
Например, вы можете:

 Выделить внешний вид кнопки ползунка, так чтобы пользователи с первого


взгляда видели, активен ли он
 Обеспечить изображения, отображающиеся с обоих концов слайдера, чтобы
помочь пользователям понять его функцию

Как правило, эти индивидуализированные изображения соотносятся с минимальными


и максимальными значениями диапазона значения, которые контролирует слайдер.
Слайдер, который управляет размером изображения, например, может отображать
очень маленькое изображение с минимальной стороны, а очень крупное — с
максимальной.

 Обозначьте разный внешний вид дорожки, в зависимости от того, на какой


стороне кнопки ползунка она отображается и в каком состоянии находится
элемент управления

Не используйте слайдер для отображения элемента управления громкостью. Если вам


нужно отобразить регулятор уровня громкости, используйте предоставленный
системой регулятор громкости, доступный, когда вы используете класс
MPVolumeView. Имейте ввиду, что если проигрывающее аудио устройство вывода не
поддерживает регулятор уровня громкости, ползунковый регулятор заменяется
соответствующим названием устройста.

Степпер (Stepper)

Степпер увеличивает или уменьшает значение на постоянную величину.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении степпера в вашем коде, см. UIStepper.

Степпер:

 Двух сегментный элемент управления, в котором по умолчанию один сегмент


отображает знак плюс, а другой — знак минус

 Поддерживает индивидуализированные изображения

 Не отображает значение, которое изменяет пользователь

Используйте степпер, если пользователям может понадобиться внести


незначительные изменения в значение.
Избегайте использования степпера, если пользователи, вероятно, будут вносить
крупные изменение в значение. Разумно использовать степпер, чтобы установить
количество копий в листе действия Параметров Принтера, так как пользователи
редко значительно изменяют это значение. С другой стороны, нет смысла
использовать степпер, чтобы помочь пользователям выбрать диапазон страниц, так
как даже допустимый диапазон страниц требует большого количества нажатий.

Сделайте очевидным значение, на которое воздействует степпер. Степпер не


отображает каких-либо значений, так что вам нужно удостовериться, что
пользователи знают, какое значение они меняют, когда используют степпер.

Переключатель (Switch)

Переключатель предоставляет две взаимоисключающие опции выбора или состояния.

Включение

Выключение

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении переключателя в вашем коде, см. UISwitch.

Переключатель:

 Отображает одно из возможных двоичных состояний элемента

 Используется только в экранных таблицах

Используйте переключатель в строке таблицы, чтобы предоставить пользователям


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

Вы можете использовать переключатель для изменения состояния других элементов


пользовательского интерфейса в окне. В зависимости от выбора пользователей,
может появиться или исчезнуть новый список элементов, либо элементы списка могут
стать активными или неактивными.

Системная Кнопка (System Button)


Системная кнопка выполняет свойственное приложению действие.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

В iOS 7 UIButtonTypeRoundedRect было переопределено как UIButtonTypeSystem.


Чтобы узнать больше о выделении системной кнопки в вашем коде, см. UIButton.

Системная кнопка:

 Не имеет границ или фона по умолчанию

 Может содержать иконку или текстовый заголовок

 Поддерживает уникальное оформление, такое как границы или фоновое


изображение (чтобы добавить уникальное внешнее оформление, используйте
кнопку типа UIButtonTypeCustom и встройте уникальное фоновое изображение)

Используйте системную кнопку для осуществления действия. Когда вы встраиваете


заголовок для системной кнопки, следуйте этому подходу:

 Используйте глагол или глагольное словосочетание для описания действия,


выполняемого кнопкой. Свойственный приложению заголовок показывает
пользователям, что кнопка интерактивна, и говорит о том, что произойдёт при
её нажатии.

 Используйте написание с заглавной буквы. Пишите с заглавной буквы каждое


слово за исключением артиклей, соединительных союзов и предлогов,
состоящих из четырёх или менее букв.

 Избегайте создания слишком длинного заголовка. Чрезмерно длинные


заголовки сокращаются, что может стать причиной непонимания их
пользователями.
По необходимости добавляйте к системной кнопке границы или фон в области
содержимого. Большую часть времени вы можете избегать добавления украшений к
кнопке посредством создания чёткого заголовка, призывающего к действию,
определив цвет и предоставив контекстуальные подсказки. Однако в некоторых
областях содержимого концентрация внимания на кнопке посредством добавления
границ или фона может быть подходящей.

Например, в iPhone цифровые клавиши с границами усиливает мысленную модель


совершения звонка, а фон кнопки Звонок предоставляет останавливающую внимание
цель, на которую легко нажать.

Текстовое Поле (Text Field)

Текстовое поле принимает одну строку пользовательского ввода (здесь показано с


целью описания и замещающим текстом).

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы узнать больше о выделении текстового поля и его индивидуализации для


отображения изображений и кнопок, см. UITextField.
Текстовое поле:

 Фиксированное по высоте поле с закруглёнными углами

 Автоматически отображает клавиатуру, когда пользователи его касаются

 Может включать в себя кнопки, предоставленные системой, такие как кнопка


Закладок

 Может отображать текст со множеством стилей (чтобы больше узнать об этом,


см. UITextView)

Используйте текстовое поле, чтобы получить небольшое количество информации от


пользователя.

Индивидуализируйте текстовое поле, если это поможет пользователям понять


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

При необходимости отобразите кнопку Очистить с правого края текстового поля.


Если этот элемент присутствует, его нажатие очищает содержимое текстового поля,
независимо от какого-либо другого изображения, которое вы, возможно, отобразили
поверх его.

Отобразите подсказку в текстовом поле, если она поможет пользователям понять его
цель. Текстовое поле может отображать замещающий текст, такой как Имя (или
Адрес), если в текстовом поле не отображается никакой другой текст.

Определите подходящий для содержимого, вводимого пользователем, тип


клавиатуры. Например, вы можете захотеть упростить для пользователей ввод URL,
PIN или телефонного номера. iOS предоставляет несколько различных типов
клавиатуры, каждая из которых спроектирована для облегчения различного типа
ввода. Чтобы узнать больше о доступных типах клавиатур, см. UIKeyboardType в
UITextInputTraits Protocol Reference. Чтобы узнать больше об управлении клавиатурой
в вашем приложении, читайте Managing the Keyboard. Имейте ввиду, что вы не
можете управлять способом ввода и расположением, так как эти свойства
определяются языковыми настройками пользователя.
Временные Окна (Temporary Views)

Предупреждения

Предупреждение предоставляет пользователям важную информацию, которая влияет


на использование приложения или устройства.

ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы использовать предупреждение в вашем коде, создайте UIAlertController и


выберите UIAlertControllerStyleAlert.

Предупреждение:

 Отображает требуемый заголовок и дополнительное сообщение

 Содержит одну кнопку или более

Частота, с которой появляется предупреждение, помогает пользователям воспринять


их серьёзно. Лучше всего свести к минимуму количество предупреждений, которое
отображает ваше приложение, а также удостовериться, что каждое предупреждение
предоставляет важную информацию и полезные опции выбора.

Избегайте создания ненужных предупреждений. Как правило, предупреждения


являются ненужными в следующих ситуациях:

Если предупреждение Сделайте это вместо использования


осуществляет это... предупреждения...

Предоставляет
Создайте привлекающий внимание способ
информацию, связанную со
отображения информации, который будет
стандартной работой
гармонично подходить к стилю приложения.
приложения

Сообщает пользователям о Используйте окно прогресса или индикатор


задачах, процесс которых активности (описанные в разделах Окно
Если предупреждение Сделайте это вместо использования
осуществляет это... предупреждения...

происходит нормально Прогресса и Индикатор Активности) или


встройте информацию о состоянии в
пользовательский интерфейс.

Запрашивает
подтверждение задач, Используйте лист действия (описан в разделе
инициированных Лист Действия).
пользователем

Если проблема не критична, встройте эту


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

Так как вы читаете указания по проектированию текста предупреждений, полезно


знать следующие определения:

 Написание с заглавной буквы означает, что каждое слово должно писаться с


заглавной буквы, за исключением артиклей, соединительных союзов и
предлогов, состоящих из четырёх или менее букв, если они не являются
первым словом.

 Написание, соответствующее предложению, означает, что первое слово


пишется с заглавной буквы, а остальные слова — строчными буквами, если
только они не являются именами или прилагательными собственными.

Кратко опишите ситуацию и объясните, что пользователи могут с этим сделать. В


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

Избегайте заголовков, состоящих из одного слова. Заголовки, состоящие из одного


слова, такие как Ошибка или Предупреждение, редко предоставляют какую-либо
полезную информацию.

По возможности используйте фрагмент предложения. Короткое, информативное


высказывание, как правило, легче понять, чем полное предложение.

Насколько возможно, создайте заголовок, добавление сообщения к которому не


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

Старайтесь не звучать обвиняюще или критикующе, когда вам необходимо доставить


неприятные новости. Люди понимают, что многие предупреждения сообщают им о
проблемах или оповещают об опасных ситуациях. Пока вы используете
дружественный тон, лучше быть негативным и прямым, чем позитивным, но неясным.

По возможности избегайте использования "вы", "ваш", "я" и "мой. Иногда текст, прямо
определяющий человека, может быть двусмысленным и даже может быть воспринят
как оскорбительный или высокомерный.

Правильно используйте выделение заглавными буквами и знаки препинания.


Особенно:

Если заголовок предупреждения... Используйте...

Является фрагментом предложения


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

Соответствующее предложению
Является одним вопросительным
написание и вопросительный знак в
предложением
конце

Соответствующее предложению
Состоит из двух или более
написание и соответствующий знак на
Если заголовок предупреждения... Используйте...

предложений конце обоих предложений

Если вы должны предоставить дополнительное сообщение предупреждения,


используйте короткое завершённое предложение. По возможности сохраните
сообщение достаточно коротким, чтобы отобразить его на одной или двух строках.
Если сообщение будет слишком длинным, его придётся прокручивать, что не
слишком понравится пользователям. Используйте в сообщении соответствующее
предложению написание и знаки препинания.

Избегайте удлинения текста предупреждения посредством описания, какую кнопку


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

 Обязательно используйте слова "нажмите" (не "дотроньтесь", "кликните" или


"выберите") чтобы описать действие выбора.

 Не заключайте заголовок кнопки в кавычки, но обязательно сохраните


написание с заглавной буквы.

Обязательно проверьте отображение предупреждения в обеих ориентациях. Так как


в ландшафтной ориентации высота предупреждения ограничена, его отображение
может отличаться от отображения в портретной ориентации. Рекомендуется
оптимизировать длину текста предупреждения, чтобы его можно было прочитать без
прокручивания независимо от ориентации.
В большинстве случаев используйте предупреждение с двумя кнопками.
Предупреждение с двумя кнопками обычно наиболее полезно, так как для людей
легче всего выбирать между двумя альтернативами. Предупреждение с одной
кнопкой с меньшей вероятностью будет полезно, так как оно оповещает людей без
предоставления какого-либо контроля над ситуацией. Предупреждение, которое
содержит три кнопки или более, является значительно более сложным, чем
предупреждение с двумя кнопками, так что его использования следует избегать,
насколько возможно. Если вы добавите слишком много кнопок в предупреждение,
может появиться необходимость прокручивать предупреждение, что я является
неприятным пользовательским опытом.

ПРИМЕЧАНИЕ

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

Разместите кнопки надлежащим образом. В идеале, кнопка, на которую нажимают


естественным образом, должна соответствовать двум критериям: Она должна
выполнять действие, которое пользователям, вероятно, нужно больше всего, и она
должна с меньшей вероятностью вызвать неудобства, если пользователь нажмёт на
неё по неосторожности. В особенности:

 Если кнопка, на которую нажимают с большей вероятностью, выполняет не


деструктивную функцию, она должна располагаться с правой стороны в
предупреждении с двумя кнопками. Кнопка, которая отменяет это действие,
должна быть слева.

 Если кнопка, на которую нажимают с большей вероятностью, выполняет


деструктивное действие, она должна быть слева в предупреждении с двумя
кнопками. Кнопка, которая отменяет это действие, должна быть справа.

ПРИМЕЧАНИЕ

Нажатие на кнопку Home во время отображения предупреждения должно, как и


предполагается, закрыть приложение. Такой подход также должен быть идентичным
при нажатии кнопки Отменить — предупреждение отклонено, а действие не
выполнено.
Дайте кнопкам предупреждения короткие логичные заголовки. Лучшие заголовки
кнопок состоят из одного или двух слов, которые описывают результат нажатия
кнопки. Во время создания заголовков для кнопок предупреждения, следуйте этим
указаниям:

 Так же как и со всеми заголовками кнопок, используйте написание с заглавных


букв без использования знаков препинания.

 По возможности используйте глаголы и глагольные словосочетания, которые


прямо соответствуют тексту предупреждения. Например, "Отменить", "Показать
Все", "Ответить" или "Игнорировать".

 Используйте "OK" для простой опции согласия, если нет лучшей альтернативы.
Избегайте использования "Да" или "Нет".

 По возможности избегайте использования "вы", "ваш", "я" и "мой". Заголовки


кнопок, в которых используются эти слова, часто являются двусмысленными и
могут показаться высокомерными.

Лист Действия (Action Sheet)

Лист действия отображает набор опций выбора, связанных с задачей,


инициированной пользователем.

В горизонтальном компактном (compact) режиме лист действия всплывает снизу


экрана

В горизонтальном обычном (regular) режиме лист действия всегда отображается во


вспомогательном окне
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы использовать лист действия в вашем коде, создайте UIAlertController и


выберите UIAlertControllerStyleActionSheet.

Лист действия:

 Появляется в результате действий пользователя

 Отображает две кнопки или более

Используйте лист действия, чтобы:

 Предоставить альтернативные способы выполнения задачи. Лист действия


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

 Получить подтверждение перед тем, как выполнить потенциально опасную


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

В горизонтальном компактном (compact) режиме используйте кнопку Отменить,


чтобы пользователи могли легко и безопасно отказаться от задачи. Отобразите
кнопку Отменить внизу листа действий, чтобы побудить пользователей прочитать
весь список альтернатив до того, как они сделают выбор.

В горизонтальном обычном (regular) режиме основывайте способ отображения листа


действий на том, как пользователь инициирует задачу. В особенности:

Если задача Отобразите лист Отображать кнопку


инициирована... действия... Отменить?

Нет, так как пользователи


Без анимации, то есть,
могут произвести нажатие
За пределами лист действия и
за пределами
вспомогательного вспомогательное окно
вспомогательного окна,
окна возникают
чтобы убрать лист
одновременно
действия
Если задача Отобразите лист Отображать кнопку
инициирована... действия... Отменить?

С анимацией, то есть, Да, так как пользователям


Внутри лист действия нужно иметь возможность
вспомогательного выдвигается поверх убрать лист действия без
окна содержимого закрытия
вспомогательного окна вспомогательного окна

Во всех режимах используйте красный цвет для кнопки, которая выполняет


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

Старайтесь, чтобы пользователи не прокручивали лист действий. Если вы


отображаете слишком много кнопок в листе действий, пользователи должны будут
прокручивать его, чтобы увидеть все опции. Пользователей это сбивает с толку, так
как им нужно потратить дополнительное время, чтобы рассмотреть опции. Также
прокручивание без неосторожного нажатия на кнопку может быть очень сложным для
пользователей.

Модальное Окно (Modal View)

Модальное окно — это окно, отображаемое модально, которое предоставляет


замкнутую функциональность в контексте текущей задачи или рабочего процесса.
ПРИМЕЧАНИЕ К ПРОГРАММНОМУ ИНТЕРФЕЙСУ ПРИЛОЖЕНИЯ (API)

Чтобы использовать модальное окно в вашем коде, создайте UIPresentationController


и выберите подходящий стиль (для просмотра полного списка стилей см. Modal
Presentation Styles).

Модальное окно:

 Может покрывать весь экран, всю область окна-источника (например,


вспомогательного окна) или часть экрана

 Содержит текст и элементы управления, необходимые для выполнения задачи

 Всегда отображает кнопку, которая завершает задачу и убирает окно, а также


кнопку Отменить, которая определяет отказ от задачи и убирает окно

Используйте модальное окно, когда вам нужно предоставить возможность совершить


автономную задачу, связанную с основной функцией вашего приложения. Модальное
окно особенно подходит для многошаговой подзадачи, которая требует элементы
пользовательского интерфейса, не принадлежащие основному пользовательскому
интерфейсу приложения всё время.
Выберите стиль модального окна, который подходит текущей задаче, режиму и
визуальному стилю вашего приложения. Вы можете использовать любой из
выделенных здесь стилей:

Стиль
модального окна Внешний вид Рекомендуется для

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

В горизонтальном обычном
(regular) режиме частично
покрывает расположенное
внизу содержимое. Все
непокрытые места становятся Предоставления
тусклыми, чтобы потенциально сложной
Список на предотвратить задачи, которую люди
странице взаимодействие с могут выполнить внутри
пользователем. контекста модального

(В горизонтальном окна.

компактном (compact) режиме


этот стиль функционирует так
же как и полноэкранный
стиль.)

В горизонтальном обычпаном
(regular) режиме отображает Получения от
содержимое, пользователя
Лист Формы отцентрированное на экране. структурированной
Все непокрытые места информации.
становятся тусклыми, чтобы
предотвратить
Стиль
модального окна Внешний вид Рекомендуется для

взаимодействие с
пользователем. В некоторых
случаях положение
модального окна изменяется,
если присутствует
клавиатура.

(В горизонтальном
компактном (compact) режиме
этот стиль функционирует так
же как и полноэкранный
стиль.)

Отображения
модального
содержимого внутри
Текущий Использует такой же размер,
панели разделённого
контекст что и источник окна.
окна, вспомогательного
окна или других не
полноэкранных окон.

Не отображайте модальное окно поверх вспомогательного. За исключением


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

Соотнесите общий вид модального окна с внешним видом вашего приложения.


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

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


Используйте стиль, который будет соответствовать вашему приложению и увеличит
осознание пользователем временного текста, который предоставляет модальное
окно. Чтобы обеспечить это, вы можете выбрать один из приведённых ниже стилей
перехода:

 Вертикальный. В вертикальном стиле модальное окно всплывает от нижней


границы экрана и уходит обратно при закрытии (это стиль перехода по
умолчанию).

 Переворот. В стиле переворота текущее окно переворачивается по горизонтали


справа налево, чтобы открыть модальное окно. Визуально модальное окно
выглядит так, будто оно является задней стороной текущего окна. Когда
модальное окно закрывают, оно переворачивается по горизонтали слева
направо, открывая предыдущее окно.

Если вы меняете стили перехода модального окна в вашем приложении, делайте


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

Разработка Иконок и Изображений

Размеры Иконок и Изображений

Каждому приложению необходима иконка и файл или изображение запуска. В


дополнение некоторым приложениям необходимы уникальные иконки, чтобы
предоставить соответствующее приложению содержимое, функции или режимы в
панелях навигации, панелях инструментов, панелях вкладок и других областях.
Таблица 45-1 содержит информацию о рекомендованных размерах уникальных
иконок и изображений.
iPhone 6s iPhone 6s,
Plus и iPhone 6, iPad и
Свойство
iPhone 6 и iPhone 5 iPhone iPad mini iPad 2 и iPad
Plus (@3x) (@2x) 4s (@2x) (@2x) mini (@1x) iPad Pro (@2x)

Иконка
приложения
(обязательна 180 x 180 120 x 120 120 x 120 152 x 152 76 x 76 167 x 167
для всех
приложений)

Иконка
приложения
для App
Store 1024 x 1024 1024 x 1024 1024 x 1024 1024 x 1024 1024 x 1024 1024 x 1024
(обязательна
для всех
приложений)

Для iPhone 6s

Файл или и iPhone 6

изображение Используйте используйте 1536 x 2048 768 x 1024 2048 x 2732

запуска файл запуска файл запуска (портрет) (портрет) (портрет)


(см. Файлы 640 x 960
(обязательно (см. Файлы 2048 x 1536 1024 x 768 2732 x 2048
для всех Запуска) Запуска)
(ландшафт) (ландшафт) (ландшафт)
приложений) Для iPhone 5
640 x 1136

Для iPhone 6s

Иконка для и iPhone 6

результатов используйте

поиска 180 x 180 120 x 120 80 x 80 120 x 120 60 x 60 120 x 120


Spotlight Для iPhone 5
(рекомендуется) используйте
80 x 80

Иконка 87 x 87 58 x 58 58 x 58 58 x 58 29 x 29 58 x 58
Настроек
iPhone 6s iPhone 6s,
Plus и iPhone 6, iPad и
Свойство
iPhone 6 и iPhone 5 iPhone iPad mini iPad 2 и iPad
Plus (@3x) (@2x) 4s (@2x) (@2x) mini (@1x) iPad Pro (@2x)

(рекомендуется)

Иконки панели
инструментов
Примерно Примерно Примерно Примерн Примерно Примерно
или панели
66 x 66 44 x 44 44 x 44 о 44 x 44 22 x 22 44 x 44
навигации
(выборочно)

Иконки Примерно Примерно Примерно Примерно Примерно Примерно


панели 75x75 50 x 50 50 x 50 50 x 50 25 x 25 50 x 50
вкладок (максимум: (максимум: (максимум: (максимум: (максимум: (максимум:
(выборочно) 144 x 96) 96 x 64) 96 x 64) 96 x 64) 48 x 32) 96 x 64)

Иконка веб-
клипа
(рекомендуется
180 x 180 120 x 120 120 x 120 152 x 152 76 x 76 167 x 167
для веб-
приложений и
веб-сайтов)

Таблица 45-1 Размер (в пикселях) индивидуализированных иконок и изображений

ПРИМЕЧАНИЕ

Если вам нужно создать уникальные иконки для Начального экрана, см. Быстрые
Действия Начального Экрана.

За исключением иконки App Store, которая должна иметь название iTunesArtwork, вы


можете назвать свои иконки как угодно. Для файлов иконок приложений используйте
данные свойств изображений в своём проекте Xcode. Чтобы добавить иконки,
установите соответствующий файл изображения к своиствам изображения в вашем
проекте. В момент разработки Xcode добавляет подходящие ключи в файлу Info.plist
и помещает изображения в комплект вашего приложения. iOS выбирает иконку,
основываясь на том, является ли её размер подходящим для использования по
назначению. Чтобы узнать больше о каталогах свойств, см. Asset Catalog Help.

Для всех изображений и иконок рекомендован формат PNG. Вам следует избегать
использования чередующихся PNG.

Стандартная битовая глубина для иконок и изображений — 24 бита.

Иконка Приложения

Каждому приложению нужна красивая запоминающаяся иконка, которая привлекает


внимание людей в App Store и выделяется среди других на Начальном экране. iOS
может использовать версии иконки приложений в Game Center, результатах поиска,
Настройках и для предоставления документов, созданных приложением.

Для достижения наилучших результатов, воспользуйтесь помощью


профессионального дизайнера. Опытный дизайнер поможет вам разработать общий
визуальный стиль вашего приложения и применить его ко всем иконкам и
изображениям в нем.

Используйте универсальные образы, чтобы люди легко их узнавали. Избегайте


фокусирования на второстепенных или неясных аспектах элемента. Например, в
приложении Почта используется конверт, а не деревенский почтовый ящик, сумка
почтальона или знак почтового отделения.

Выбирайте простое. В частности, избегайте использования множества различных


изображений в иконке. Найдите один элемент, который выражает сущность вашего
приложения, и выразите этот элемент в простой уникальной форме. Добавляйте
детали осторожно. Если содержание или форма иконки чрезмерно сложны, детали
могут привести к путанице и могут выглядеть нечётко при меньших размерах.

СОВЕТ

Чтобы проверить внешний вид иконки вашего приложения в маленьком размере,


переместите её в папку Начального экрана. Ещё лучше, если вы переместите
несколько иконок в корзину и посмотрите, по-прежнему ли ваша иконка смотрится
хорошо и отличается.

Создайте абстрактную интерпретацию основной идеи вашего приложения.


Использование фото или скриншота в иконке приложения редко выглядит хорошо,
так как фотографические детали очень сложно разглядеть при маленьких размерах.
Как правило, лучше интерпретировать реальность в творческой манере, так как это
позволит вам выделить те аспекты, которые вы хотите, чтобы пользователи заметили.

Если вы хотите изобразить реальное содержание, делайте это безошибочно. Иконки,


которые отображают реальные объекты, должны точно повторять характеристики
содержания, такие как ткань, стекло, бумага и металл, и передавать вес и ощущение
объекта.

Удостоверьтесь, что иконка приложения выглядит хорошо на разном фоне.


Проверяйте вашу иконку не только на светлом или тёмном фоне, так как вы не
можете предсказать, какой фон люди могут выбрать.

Избегайте прозрачности. Иконки приложений должны быть непрозрачными. Если


границы иконки меньше рекомендуемых размеров, либо вы используете
прозрачность для создания просвечивающих областей, законченная иконка может
расплыться на тёмном фоне, что, как правило, выглядит особенно непривлекательно
на красивых обоях, которые выбирают пользователи.

Не используйте элементы интерфейса iOS в ваших иллюстрациях. Вам не нужно,


чтобы пользователи путали ваши иконки или изображения с пользовательским
интерфейсом iOS.
Не используйте копии аппаратных изделий Apple в ваших иллюстрациях. Символы,
которые представляют продукты Apple, защищены авторским правом и не могут быть
воспроизведены в иконках или изображениях. В общем, избегать репродукций
любых устройств в ваших работах — это хорошая идея, поскольку их дизайн часто
меняется и иконки или изображения, основанные на нем, могут отслеживаться датой.

Не используйте повторно иконки приложений iOS в своём интерфейсе. Если


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

Создавайте разные размеры иконок приложений для разных устройств. Вам нужно
удостовериться, что иконка вашего приложения хорошо смотрится на всех
устройствах, которые вы поддерживаете. Для получения параметров, зависящих от
устройства, см. Таблицу 45-1.

Когда iOS отображает иконку приложения на Начальном экране устройства,


автоматически применяется шаблон, который скругляет углы. Удостоверьтесь, что у
вашей иконки углы равны 90°, чтобы они хорошо смотрелась после применения
шаблона. Например:

Иконка 120 x 120 пикселей перед применением шаблона

Иконка 120 x 120 пикселей после применения шаблона

Создайте крупную версию иконки вашего приложения для отображения в App Store.
Хотя важно, чтобы эта версия всегда была узнаваема как иконка вашего приложения,
она может быть немного более насыщенная и детальная. Нет никаких визуальных
эффектов, которые можно добавить к этой версии иконки вашего приложения.

Как показано в Таблице 45-1, крупная версия иконки вашего приложения должна
иметь размеры 1024 x 1024 пикселей и иметь название iTunesArtwork@2x. (При
необходимости в поддержке некоторых устройств @1x, создайте версию с
размерами 512 x 512 пикселей и назовите её iTunesArtwork.)

ПРИМЕЧАНИЕ
iOS также может использовать крупные изображения другими способами. В
приложении iPad, например, iOS использует крупное изображение для создания
крупной иконки документа.

Если вы разрабатываете приложение для узконаправленного распространения


(внутреннее распространение, не через App Store) вы также должны предоставить
крупные версии иконки вашего приложения. Эта иконка определяет ваше
приложение в iTunes.

Иконки Документов

Если ваше приложение IOS создаёт документы уникального типа, вам нужно, чтобы у
пользователей была возможность с первого взгляда распознавать эти документы. Вам
не нужно создавать уникальную иконку для этой цели, так как iOS использует иконку
вашего приложения для создания иконки документа для вас.

Иконки Spotlight и Настроек

Каждое приложение должно предоставлять маленькую иконку, которую iOS может


отображать, если название приложения подходит условиям в поиске Spotlight.
Приложения, которые поддерживают настройки, также должны поддерживать
маленькую иконку для определения их во встроенном приложении Настройки.

Эти иконки должны ясно определять ваше приложение, чтобы люди могли узнать его
в списке результатов поиска или в Настройках. Например, иконки встроенных
приложений довольно легко распознать в Настройках, не смотря на то, что иконки
маленького размера:
Как и с иконками приложений, вы можете назвать эти маленькие иконки как угодно,
так как iOS выбирает иконку основываясь на том, является ли её размер подходящим
для использования по назначению.

Для всех устройств предоставьте отдельные иконки для результатов поиска Spotlight
и Настроек. Если вы не предоставите эти иконки, iOS может уменьшить иконку
вашего приложения для отображения в этих местах. Для получения подробностей о
конкретных размерах см. Таблицу 45-1.

ПРИМЕЧАНИЕ

Если фон вашей иконки белый, не добавляйте серый оверлей в попытке увеличить её
видимость в Настройках. iOS добавляет контур в 1 пиксель, чтобы все иконки хорошо
смотрелись на белом фоне в Настройках.

Файлы Запуска

Файл (или изображение) запуска предоставляет заполняющее изображение, которое


iOS отображает при запуске вашего приложения. Заполняющее изображение создаёт
у пользователей впечатление, что ваше приложение быстрое и отзывчивое, так как
оно появляется немедленно и сразу же заменяется первым экраном вашего
приложения. Каждое приложение должно поддерживать файл запуска или, по
меньшей мере, одно статичное изображение.

В iOS 8 и позднее вы можете создать XIB или файл раскадровки вместо статичного
изображения запуска. Когда вы создаёте файл запуска в Конструкторе Интерфейса,
вы используете size classes, чтобы выделить различное расположение для разных
режимов отображения, и вы также используете Auto Layout (авто-расположение),
чтобы внести незначительные изменения. Использование size classes и Auto Layout
означает, что вы можете создать один файл запуска, который будет хорошо
смотреться на всех устройствах в разном режиме отображения. (Чтобы получить
полное представление о режимах отображения и size classes, см. Встраивание
Адаптивности. Чтобы узнать, как использовать size classes в Конструкторе
Интерфейса, см. Size Classes Design Help.)

Если вам также нужно поддержать более ранние версии iOS, вы можете продолжить
предоставлять статичные изображения запуска в дополнение к файлам запуска.

ВАЖНО

Вы используете XIB или раскадровочный файл запуска, чтобы показать, что ваше
приложение работает на iPhone 6 Plus или iPhone 6.

Последующие указания по созданию применяются и к файлам запуска, и к статичным


изображениям запуска.

Создайте простое изображение запуска, которое улучшит пользовательский опыт. В


частности, изображение запуска не является возможностью, чтобы предоставить:

 "Впечатление входа в приложение", такое как экран-заставка

 Окно "О приложении"

 Элементы бренда, если только они не являются статичной частью первого


экрана вашего приложения

Из-за того, что пользователи обычно быстро переключаются между приложениями,


вы должны приложить все усилия, чтобы свести к минимуму время запуска, и вы
должны создать изображение запуска, которое скорее преуменьшает значение опыта
использования, нежели чем привлекает к нему внимание.

Создайте изображение запуска, которое идентично первому экрану вашего


приложения, за исключением:
 Текста. Изображение запуска статично, так что любой текст, который вы
отображаете в нём, не будет обнаружен.

 Элементов пользовательского интерфейса, которые могут измениться. Если вы


включаете элементы, которые могут выглядеть иначе, когда приложение
завершает запуск, пользователи могут увидеть неприятную вспышку между
изображением запуска и первым экраном приложения.

Если вы думаете, что результатом этих указаний окажется простое скучное


изображение, вы правы. Помните, что изображение запуска не предоставляет вам
возможности творчески себя выразить. Оно предназначено только для усиления
пользовательского восприятия вашего приложения путём быстрого запуска и
немедленной готовности к использованию. Например, Настройки и Погода
предоставляют изображение запуска, которое является немногим больше фонового
изображения.

Изображение запуска приложения Настройки

Изображение запуска приложения Погода


Если вам нужно использовать статичные изображения запуска, создайте изображения
в разных размерах для разных устройств. Статичные изображения для всех устройств
должны включать в себя область статус-панели. Для ознакомления с конкретными
размерами см. Таблицу 45-1.

Хотя для iPhone 6 и iPhone 6 Plus лучше использовать файл запуска, при
необходимости вместо него вы можете предоставить статичное изображение запуска.
Если вам нужно создать статичные изображения запуска для этих устройств,
соблюдайте эти размеры:

Для iPhone 6:

 750 x 1334 (@2x) для портрета

 1334 x 750 (@2x) для ландшафта

Для iPhone 6 Plus:

 1242 x 2208 (@3x) для портрета

 2208 x 1242 (@3x) для ландшафта

Шаблоны Иконок

Уникальная иконка, которую вы создаёте для панели или быстрых действий


Начального экрана, также известна как шаблонная иконка или изображение, так как
iOS использует её как шаблон для создания иконки, которую вы видите во время
работы вашего приложения.

iOS выделяет множество стандартных маленьких иконок, таких как Обновить,


Действие, Добавить и Избранное. По возможности используйте эти кнопки и иконки,
чтобы предоставить стандартные задачи в вашем приложении. (Чтобы узнать больше
о стандартных кнопках и иконках для использования в панелях, см. Кнопки Панели
Инструментов и Панели Навигации и Иконки Панели Вкладок.)

Если ваше приложение включает в себя задачи или режимы, которые нельзя
представить стандартной иконкой, или если стандартные иконки не соответствуют
стилю вашего приложения, вы можете создать свои собственные маленькие иконки.
На самом высоком уровне вы должны стремиться к дизайну иконки, который:

 Простой и чётко организованный. Слишком большое количество деталей может


создать впечатление неразборчивой или неряшливой иконки.

 Нельзя легко принять за одну из предоставленных системой иконок.


Пользователи должны быть способны отличать вашу уникальную иконку от
стандартных с первого взгляда.

 Полностью понятен и широко применим. Стремитесь к созданию символа,


который большинство пользователей воспримет правильно, и который никому
не покажется обидным.

ВАЖНО

Обязательно избегайте использования в дизайне изображений, которые повторяют


продукцию Apple. Эти символы защищены авторским правом, а дизайн продукции
может часто меняться.

Используете ли вы только уникальные иконки или совокупность уникальных и


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

Например, посмотрите на группу иконок iOS для использования в панелях и обратите


внимание на то, как сходства в размере, деталях и выразительности создают
впечатление единого целого:
Ключом к созданию гармоничной группы иконок является связность: По возможности,
каждая иконка должна иметь одинаковый ракурс и насыщенность штрихов. Чтобы
удостовериться, что все иконки имеют согласованный воспринимаемый размер, вам
может понадобиться создать некоторые иконки разного фактического размера.
Например, набор предоставленных системой иконок, показанный здесь, имеет
одинаковый воспринимаемый размер, не смотря на то, что иконки Избранное и
Голосовая Почта немного больше чем остальные три иконки.

Если вы создаёте уникальную иконку для панели вкладок, вы должны предоставить


две версии — одну для отображения в тот момент, когда она не выбрана, а другую —
когда выбрана. Внешний вид иконки, когда она выбрана, часто является заполненной
версией невыбранной иконки, но некоторый дизайн призывает к изменениям в этом
подходе.

Чтобы создать заполненную версию иконки, у которой есть внутренние детали (как у
иконки Радио) инвертируйте детали, чтобы сохранить их выпуклые части в
выбранной версии. У иконки Keypad также есть внутренние детали, но было бы
сложно распознать выбранную версию, если бы её фон был заполнен, а круги стали
белыми контурами.
Иногда оформлению требуется едва заметное изменение, чтобы оно хорошо
смотрелось в выбранном варианте. Например, иконки Таймера и Подкастов включают
в себя открытые области, в выбранных версиях штрихи немного уплотнены, чтобы
вместиться в круглый контур.

Если иконку в заполненной версии становится сложнее узнать, хорошей


альтернативой является использование более плотных штрихов, чтобы нарисовать
выбранную версию. Например, выбранные версии иконок Голосовой Почты и Списка
Книг нарисованы при помощи штриха толщиной в 2 пункта, вместо одного, который
использовался для создания невыбранной версии.

Иногда у формы иконки присутствуют детали, которые смотрятся плохо при


рисовании контурной линии штрихом. В таком случае, вы можете использовать
заполненный внешний вид для обеих версий иконок, как это сделано в случае иконок
Музыки и Исполнителей. Для пользователей просто определить выделенные и
невыделенные версии таких иконок, так как выбранная версия темнее и насыщеннее.

Чтобы создать уникальную маленькую иконку, следуйте этим указаниям:

 Используйте прозрачность для выделения формы иконки. iOS игнорирует всю


информацию о цвете, так что нет необходимости использовать больше одного
цвета для заполнения.

 Не используйте смещённую отбрасываемую тень.

 Используйте сглаживание цветов.

Если вы хотите создать маленькую иконку, которая будет выглядеть так, будто она
связана с группой иконок iOS, используйте очень тонкий штрих для рисования. В
особенности штрих толщиной в 1 пункт (для разрешения @2x это штрих толщиной в
2 пункта) является наиболее подходящим для большинства иконок.
Независимо от визуального стиля иконки, используйте размеры, указанные в Таблице
45-1, чтобы создать уникальные иконки для панелей инструментов, панелей
навигации и панелей вкладок. Если вы создаёте уникальную шаблонную иконку для
быстрых действий Начального экрана, см. Быстрые Действия Начального Экрана.

Не включайте текст в уникальную иконку панели вкладок. Вместо этого используйте


элемент API панели вкладок, чтобы установить заголовок для каждой вкладки
(например, initWithTitle:image:tag:). Если вам нужно внести изменения в
автоматическое расположение заголовка, вы можете использовать API изменений
заголовка, например, setTitlePositionAdjustment:.

Web Clip Иконки

Если у вас есть веб-приложение или веб-сайт, вы можете предоставить уникальную


иконку, которую пользователи могут отобразить на Начальном экране посредством
использования функции web clip. Пользователи нажимают на иконку, чтобы одним
лёгким движением получить доступ к веб-содержимому. Вы можете создать иконку,
которая представляет ваш веб-сайт полностью, или иконку, которая представляет
одну веб-страницу.

iOS также отображает web clip иконки в Избранном Safari в виде сетки иконок,
которая появляется, когда пользователи нажимают на поле URL или открывают новую
вкладку в Safari.

Если ваше веб-содержимое отличается знакомым изображением или узнаваемой


цветовой схемой, имеет смысл использовать это в вашей иконке. Однако, чтобы
удостовериться, что ваша иконка отлично смотрится на устройстве, вы также должны
следовать правилам этого раздела. (Чтобы узнать, как добавить код к веб-
содержимому для предоставления уникальной иконки, см. Specifying a Webpage Icon
for Web Clip.)

Для ознакомления с конкретными размерами см. Таблицу 45-1.

ПРИМЕЧАНИЕ

Вы можете предотвратить добавление каких-либо последствий, если назовете иконку


apple-touch-icon-precomposed.png.

Создание Изображений с Изменяемым Размером (Creating Resizable Images)


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

Для многих элементов пользовательского интерфейса в дополнение к фоновому


внешнему виду вы также можете установить end caps (заглушки). End cap (заглушка)
выделяет область изображения, которая не должна меняться. Например, вы можете
создать изображение с изменяемым размером, которое включает в себя четыре end
caps (заглушки), которые определяют четыре угла кнопки. Когда размер изображения
меняется, чтобы заполнить фоновую область кнопки, части, выделенные end caps
(заглушками), остаются неизменными.

В зависимости от измерений изображения с изменяемыми размерами, которые вы


устанавливаете, iOS либо растягивает, либо может его замостить надлежащим
образом, чтобы вместить в фоновую область элемента пользовательского
интерфейса. Растянуть изображение означает увеличить его независимо от
изначального соотношения сторон. Растягивание эффективно, но для
многопиксельных изображений, которые могут исказиться, этот метод обычно не
является желательным. Замостить изображение означает повторить исходное
изображение необходимое количество раз, чтобы заполнить необходимую область.
Этот метод является не столь эффективным как растягивание, но это единственный
способ добиться эффекта текстуры или узора.

По общему правилу, вы должны предоставить самое маленькое изображение (не


учитывая end caps), которое в итоге будет выглядеть так, как вы хотите. Например:

 Если вы хотите получить сплошной тон без градиента, создайте изображение 1


x 1 пункт.

 Если вам нужен вертикальный градиент, создайте изображение с шириной в 1


пункт и высотой, которая соответствует высоте фона элемента
пользовательского интерфейса.

 Если вы хотите предоставить повторяющийся текстурированный фон, вам


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

Статистика Изменений

Обзор Изменений Документа


В этой таблице описаны изменения iOS Human Interface Guidelines.
Дата Примечания

2015-11- Подчёркнута важность обеспечения peek and pop (быстрый


05 взгляд и появление) во всём приложении.

Добавлены указания для создания прекрасного


исследовательского приложения и для отображения Живых
Фотографий (Live Photos).
2015-10-
21
Добавлено руководство по поддержке 3D Touch; обновлено
руководство по использованию системного шрифта, а также по
поддержке Apple Pay и Wallet.

2015-04-
Добавлены незначительные изменения по всему объёму.
08

2014-12-
Добавлены главы с руководством HealthKit и Apple Pay.
18

2014-10- Внесены незначительные изменения и улучшены нормативы


20 цветового контраста.

Обновление для iOS 8; добавлены руководящие указания по


2014-09-
созданию более гибкого расположения, а также по созданию
17
расширений приложений.

Добавлены нормативы по ознакомлению; внесены


2014-03-
незначительные изменения и обновлены некоторые
10
иллюстрации.

2014-02- Исправлены ошибки и заменены некоторые устаревшие


11 иллюстрации.

Добавлены размеры иконок для высокого разрешения iPad mini,


2013-10-
изменены размеры иконки Newsstand, а также восстановлены
22
принципы проектирования iPhone 5.
Дата Примечания

2013-09-
Изменено и обновлено для iOS 7.
18

Вам также может понравиться