Содержание
В этой статье будет рассмотрен достаточно простой компонент в UIKit — UISlider. Он служит для выбора значения из заданного диапазона. Рассмотрим мы его на примере регулировки яркости экрана. Так как возможность регулировать яркость из своих приложений появилась только в iOS 5, то вам потребуется как минимум XCode 4.2 с iOS 5 SDK. Что бы проверить изменение яркости вам потребуется iOS-устройство — iPhone, iPod либо iPad.
Приготовления
Создадим проект «Single View Application».
Откроем файл ViewController.m, найдем в нем метод viewDidLoad и допишем в него:
UISlider* slider = [[UISlider alloc] initWithFrame:CGRectMake(26, 219, 264, 23)];
[self.view addSubview:slider];
[slider release];
Запустим проект и убедимся, что в центре экрана действительно появился UISlider.
Выше приведенный пример — способ создания UISlider.
Получение значения
Самый первый вопрос, который вы можете задать — «А как же получать значение с UISlider?» и «Как узнать, что значение изменилось»?
У UISlider есть свойство — value. Это свойство имеет тип float:
float value = [slider value];
Но прежде всего стоит задать диапазон из которого выбирается значение. Для этого существует два свойства — maximumValue и minimumValue. Они показывают максимальное и минимальное значение соответственно. Задать их можно так:
[slider setMinimumValue:0.0];
[slider setMaximumValue:1.0];
Узнаем об изменении значения
Чтобы узнать, что значение изменилось необходимо определить обработчик данного события (допишите в ViewController.m):
-(void) sliderValueDidChange:(id)sender {
// код обработки
}
И назначить его (допишите в метод viewDidLoad):
[slider addTarget:self action:@selector(sliderValueDidChange:) forControlEvents:UIControlEventValueChanged];
В какой момент будет вызываться обработчик? В данном случае следует обратить внимание на свойство isContinuous. Если данное свойство установлено в YES, то обработчик будет вызываться при каждом изменении значения, если в NO, то обработчик будет вызываться только после поднятия пальца с экрана.
Регулировка яркости экрана
В iOS 5 разработчики получили возможность регулировать яркость экрана прямо из приложения. Делается это следующим образом:
[[UIScreen mainScreen] setBrightness:ЗНАЧЕНИЕ];
Значение должно быть в диапазоне от 0 до 1 включительно.
Далее сделаем так, чтобы слайдером можно было регулировать яркость экрана. Установим диапазон значений слайдера между 0 и 1, назначим обработчик и сделаем так, чтобы событие приходило при каждом изменении. Код метода viewDidLoad:
- (void)viewDidLoad
{
[super viewDidLoad];
UISlider* slider = [[UISlider alloc] initWithFrame:CGRectMake(26, 219, 264, 23)];
[slider setMinimumValue:0.0];
[slider setMaximumValue:1.0];
[slider addTarget:self action:@selector(sliderValueDidChange:) forControlEvents:UIControlEventValueChanged];
[slider setContinuous:YES];
[self.view addSubview:slider];
[slider release];
[slider setValue:[[UIScreen mainScreen] brightness]];
}
Последняя строчка устанавливает положение слайдера в текущее значение яркости экрана.
Далее напишем метод обработчик, который задает яркость экрана в зависимости от значение слайдера:
-(void) sliderValueDidChange:(id)sender {
UISlider* slider = (UISlider*)sender;
[[UIScreen mainScreen] setBrightness:[slider value]];
}
На этом все! Как всегда, вы можете загрузить исходный проект. Напомню, что для полноценной работы вам потребуется iOS-устройство.
Исходники тут
Последние статьи
-
Audio Unit в iOS. Часть 3, накладываем эффект Delay
-
Audio Unit в iOS. Часть 2, строим граф и проигрываем файлы
-
Audio Unit в iOS. Часть 1, введение.
-
Используем Emoji в своих приложениях
-
Как вводить в UITextField только цифры?
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: