Размер шрифта
-
+

iOS. Приемы программирования - стр. 79

>}

>else if ([buttonTitle isEqualToString: [self audioButtonTitle]]){

>/* Добавляем аудио… */

>}


>}


>– (void) performAddWithAlertView:(id)paramSender{


>[[[UIAlertView alloc] initWithTitle: nil

>message:@"Add…"

>delegate: self

>cancelButtonTitle:@"Cancel"

>otherButtonTitles:

>[self photoButtonTitle],

>[self audioButtonTitle], nil] show];


>}


>– (void) performAddWithPopover:(id)paramSender{

>[self.popoverController

>presentPopoverFromBarButtonItem: self.barButtonAdd

>permittedArrowDirections: UIPopoverArrowDirectionAny

>animated: YES];


>}


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


Рис. 1.79. Простой вспомогательный экран, отображаемый после нажатия навигационной кнопки


Если запустить это же универсальное приложение в эмуляторе iPhone и нажать на навигационной панели кнопку +, результат будет примерно как на рис. 1.80.


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


Здесь мы воспользовались важным свойством контроллера информационного вида: preferredContentSize. Когда вспомогательный экран отображает контроллер своего информационного вида, он будет автоматически считывать значение этого свойства и корректировать свой размер (высоту и ширину). Кроме того, мы использовали метод presentPopoverFromBarButtonItem: permittedArrowDirections: animated: вспомогательного экрана в корневом контроллере нашего вида. Этот метод нужен, чтобы вспомогательный экран отображался над кнопкой навигационной панели. Первый параметр, принимаемый данным методом, – это кнопка навигационной панели, та, над которой должен всплывать контроллер вспомогательного экрана. Второй параметр указывает при появлении вспомогательного экрана направление его развертывания относительно объекта, из которого он появляется. Например, на рис. 1.79 видно, что стрелка вспомогательного экрана указывает вверх от кнопки с навигационной панели. Значение, передаваемое этому параметру, должно относиться к типу UIPopoverArrowDirection::


>typedef NS_OPTIONS(NSUInteger, UIPopoverArrowDirection) {

>UIPopoverArrowDirectionUp = 1UL << 0,

>UIPopoverArrowDirectionDown = 1UL << 1,

>UIPopoverArrowDirectionLeft = 1UL << 2,

>UIPopoverArrowDirectionRight = 1UL << 3,

>UIPopoverArrowDirectionAny = UIPopoverArrowDirectionUp |

>UIPopoverArrowDirectionDown |

>UIPopoverArrowDirectionLeft |

>UIPopoverArrowDirectionRight,

>UIPopoverArrowDirectionUnknown =

>NSUIntegerMax

>};

См. также

Разделы 1.9 и 1.15.

Глава 2. Создание динамических и интерактивных пользовательских интерфейсов

2.0. Введение

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

В iOS 7 Apple добавила в iOS SDK ряд новых классов, которые позволяют обогащать ваше приложение очень интересной физикой, делая их еще более интерактивными. Например, в новой iOS вы заметите, что фоновые рисунки, которые могут служить обоями Рабочего стола, стали еще живее, так как они могут двигаться по экрану, если вы качаете устройство влево-вправо, и т. д. Появились также новые разновидности поведений, которые iOS позволяет добавлять в приложения.

Страница 79