>}


Теперь, когда мы закончили работу с оттенками переключателя, перейдем к оформлению внешнего вида переключателя, связанному с использованием изображений «включено» и «выключено». При этом не забываем, что заказные изображения «включено» и «выключено» поддерживаются только в iOS 6 и старше. iOS 7 игнорирует такие изображения и при оформлении внешнего вида работает только с оттенками. Как было указано ранее, оба варианта изображения на переключателе – как для включенного, так и для выключенного состояния – должны иметь ширину 77 точек и высоту 22 точки. Поэтому я подготовил новый комплект таких изображений (для работы с обычным и сетчатым дисплеем). Я добавил их в мой проект в Xcode под названиями On@2x.png и Off@2x.png (для сетчатого дисплея), а также поместил здесь разновидности изображений для обычного дисплея. Теперь нам предстоит создать переключатель, но присвоить ему заказные изображения «включено» и «выключено». Для этого воспользуемся следующими свойствами UISwitch:

onImage – как указано ранее, это изображение будет использоваться, когда переключатель включен;

• offImage – это изображение соответствует переключателю в состоянии «выключено».

А вот код, позволяющий добиться такого эффекта:


>– (void)viewDidLoad

>{

>[super viewDidLoad];


>/* Создаем переключатель */

>self.mainSwitch = [[UISwitch alloc] initWithFrame: CGRectZero];

>self.mainSwitch.center = self.view.center;

>/* Убеждаемся, что переключатель не выглядит размытым в iOS-эмуляторе */

>self.mainSwitch.frame = [self roundedValuesInRect: self.mainSwitch.frame];

>[self.view addSubview: self.mainSwitch];


>/* Оформляем переключатель */

>self.mainSwitch.onImage = [UIImage imageNamed:@"On"];

>self.mainSwitch.offImage = [UIImage imageNamed:@"Off"];

>}

См. также

Раздел 1.2.

1.4. Выбор значений с помощью UIPickerView

Постановка задачи

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

Решение

Воспользуйтесь классом UIPickerView.

Обсуждение

Вид выбора (Picker View) – это элемент графического интерфейса, позволяющий отображать для пользователей списки значений, из которых пользователь затем может выбрать одно. В разделе Timer (Таймер) приложения Clock (Часы) в iPhone мы видим именно такой пример (рис. 1.10).


Рис. 1.10. Вид выбора, расположенный в верхней части экрана


Как видите, в отдельно взятом виде выбора содержится два независимых визуальных элемента, один слева, другой справа. В левой части вида отображаются часы (0, 1, 2 и т. д.), а в правой – минуты (18, 19, 20, 21, 22 и т. д.). Два этих элемента называются компонентами. В каждом компоненте есть строки (Rows). На самом деле любой элемент в любом компоненте представлен строкой, как мы вскоре увидим. Например, в левом компоненте 0 hours – это строка, 1 – это строка и т. д.

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

Сначала перейдем к файлу реализации. m контроллера нашего вида и определим в нем вид выбора:


>@interface ViewController ()

>@property (nonatomic, strong) UIPickerView *myPicker;

>@end


>@implementation ViewController


>…

>А теперь создадим вид выбора в методе viewDidLoad контроллера нашего вида:

>– (void)viewDidLoad{

>[super viewDidLoad];


>self.view.backgroundColor = [UIColor whiteColor];


>self.myPicker = [[UIPickerView alloc] init];

>self.myPicker.center = self.view.center;

>[self.view addSubview: self.myPicker];


>}


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