iOS. Приемы программирования - страница 32
>/* Изменяем изображение, соответствующее максимальному значению */
>[self.slider setMaximumValueImage: [UIImage imageNamed:@"MaximumValue"]];
>}
Ползунок в iOS 7 выглядит совершенно иначе, нежели в более ранних версиях. Как вы догадываетесь, этот элемент стал очень прямолинейным и тонким на вид. Высота максимальной и минимальной отметок на шкале в iOS 7 составляет всего 1 точку, поэтому задавать для этих элементов специальные изображения абсолютно бесполезно – скорее всего, получится некрасиво. Поэтому для оформления этих элементов UISlider в iOS 7 рекомендуется оперировать лишь оттенками, но не присваивать элементу никаких изображений.
См. также
Раздел 1.6.
1.8. Группирование компактных параметров с помощью UISegmentedControl
Постановка задачи
Требуется предложить пользователям на выбор несколько параметров, из которых они могут выбирать. Пользовательский интерфейс должен оставаться компактным, простым и легким для понимания.
Решение
Используйте класс UISegmentedControl. Пример работы с этим классом показан на рис. 1.22.
Рис. 1.22. Сегментированный элемент управления, в котором отображаются четыре параметра
Обсуждение
Сегментированный элемент управления – это сущность, позволяющая отображать в компактном пользовательском интерфейсе наборы параметров, из которых пользователь может выбирать нужный. Чтобы отобразить сегментированный элемент управления, создайте экземпляр класса UISegmentedControl. Начинаем работу с файла реализации (.m) нашего контроллера вида:
>#import "ViewController.h"
>@interface ViewController ()
>@property (nonatomic, strong) UISegmentedControl *mySegmentedControl;
>@end
>@implementation ViewController
>…
>Создаем сегментированный элемент управления в методе viewDidLoad контроллера нашего вида:
>– (void)viewDidLoad{
>[super viewDidLoad];
>NSArray *segments = [[NSArray alloc] initWithObjects:
>@"iPhone",
>@"iPad",
>@"iPod",
>@"iMac", nil];
>self.mySegmentedControl = [[UISegmentedControl alloc]
>initWithItems: segments];
>self.mySegmentedControl.center = self.view.center;
>[self.view addSubview: self.mySegmentedControl];
>}
Чтобы представить разные параметры, которые будут предлагаться на выбор в нашем сегментированном элементе управления, мы используем обычный массив строк. Такой элемент управления инициализируется с помощью метода initWithObjects:. Потом передаем сегментированному элементу управления массив строк и изображений. Результат будет как на рис. 1.22.
Теперь пользователь может выбрать в сегментированном элементе управления один из параметров. Допустим, он выбирает iPad. Тогда пользовательский интерфейс сегментированного элемента управления изменится и покажет пользователю, какой параметр будет выбран. Получится такое изображение, как на рис. 1.23.
Рис. 1.23. Пользователь выбрал один из вариантов в сегментированном элементе управления
Возникает вопрос: как узнать, что пользователь выбрал в сегментированном элементе управления новый параметр? Ответ прост. Как и при работе с UISwitch или UISlider, применяется метод addTarget: action: forControlEvents: сегментированного элемента управления, к которому добавляется цель. Для параметра forControlEvents нужно задать значение UIControlEventValueChanged, так как именно это событие запускается, когда пользователь выбирает в сегментированном элементе управления новый параметр:
>– (void) segmentChanged:(UISegmentedControl *)paramSender{