Главная » iPhone » Манипуляции строкой состояния iPhone

0

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

Режим строки состояния

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

-   (void)setstatusBarMode:(int)mode duration:(float)duration

-   (void)setstatusBarMode:(int)mode orientation:(int)orientation duration:(float)duration

-   (void)setStatusBarMode:(int)mode orientation:(int)orientation duration:(float)duration fencelD:(int)fencelD

-   (void)setStatusBarMode:(int)mode orientation:(int)orientation duration:(float)duration fencelD:(int)fencelD

animation:(int)animation;

Режим

Режим (mode) строки состояния определяет полный внешний вид в цвете и прозрачности (табл. 3.8).

Таблица 3.8

Режим

Описание

0

По умолчанию, белая строка состояния

1

Черная прозрачная строка состояния

2

Полупрозрачное изображение строки состояния

Ориентация

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

• V                                                                                                                                              Ь

Таблица 3.9

Угол

Описание

0

Строка состояния отображается наверху iPhone

90

Строка состояния отображается в альбомной ориентации вдоль правой части экрана

-90

Строка состояния отображается в альбомной ориентации вдоль левой части экрана

Длительность

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

Fence ID

Этот параметр предназначен для внутренних нужд. Мы даже не догадываемся, что он означает.

Анимация

Анимация (animation) задает анимацию для осуществления перехода от предыдущего статуса строки состояния к новому. На сегодня поддерживаются следующие анимации (табл. ЗЛО).

Таблица 3.10

Анимация

Описание

0

Постепенное исчезнование/постепенное проявление

1

Новая строка состояния появляется на экране снизу

2

Старая строка состояния исчезает с экрана вниз

3

Старая строка состояния исчезает с экрана вверх; новая строка состояния появляется на экране сверху

4

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

5

Без анимации

Скрытие строки состояния

Если вы из каких-либо соображений хотите удалить строку состояния, то ее размер должен измениться, чтобы освободить пространство экрана для других видов, и она должна быть скрыта. Размер строки состояния можно установить С ПОМОЩЬЮ класса UIHardware.

Чтобы полностью удалить строку состояния, установите ее высоту в 0 и пометьте ее как скрытую:

[ UIHardware _setStatusBarHeight: 0.0 ]; [ self setStatusBarHidden: YES ];

Чтобы восстановить строку состояния:

[ UIHardware _setStatusBarHeight: 20.0 ]; [ self setStatusBarHidden: NO ];

Изображения строки состояния

На строку состояния можно помещать изображения, чтобы уведомить пользователя о каком-либо конкретном состоянии приложения, например, воспроизведении музыки или о входе в чат (chat room). Изображения остаются на строке состояния даже тогда, когда вы выйдете из вашего приложения, тем самым позволяя пользователю быть в курсе будущих событий, например, будильника. Если ваше приложение завершится раньше времени, то изображение может быть автоматически удалено.

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

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

Установка

При первом запуске вашего приложения оно должно скопировать два файла в папку SpringBoard, расположенную по адресу /System/Library/CoreServices/ SpringBoard.арр. Для своих изображений выбирайте односложный дескриптор и называйте их Default NAME.png и FSO NAME.png. Изображение Default будет отображаться при использовании белой строки состояния, а изображение FSO будет выводиться на черной строке состояния.

После того как эти файлы будут скопированы в папку SpringBoard, чтобы они были распознаны, программу SpringBoard необходимо перезапустить. Для этого вызовите launchctl в оболочке iPhone:

# launchctl stop com.apple.SpringBoard

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

Отображение и удаление изображения строки состояния

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

[ UIApp addStatusBarlmageNamed: @"NAME" removeOnAbnormalExit: YES ];

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

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

removestatusBaгImageNamed: [ UIApp removeStatusBarlmageNamed: @"NAME" ];

Источник: Здзиарски Дж. iPhone. Разработка приложений с открытым кодом: Пер„с англ. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2009. — 368 е.: ил.

По теме:

  • Комментарии