iOS. Приемы программирования. Вандад Нахавандипур

Чтение книги онлайн.

Читать онлайн книгу iOS. Приемы программирования - Вандад Нахавандипур страница 53

iOS. Приемы программирования - Вандад Нахавандипур Бестселлеры O’Reilly (Питер)

Скачать книгу

UIControlStateHighlighted];

      [self.myButton addTarget: self

      action:@selector(buttonIsPressed:)

      forControlEvents: UIControlEventTouchDown];

      [self.myButton addTarget: self

      action:@selector(buttonIsTapped:)

      forControlEvents: UIControlEventTouchUpInside];

      [self.view addSubview: self.myButton];

      }

      Рис. 1.58. В центре экрана находится системная кнопка

      В коде из данного примера мы применяем метод setTitle: forState: кнопки, задавая для нее два разных заголовка. Заголовок – это надпись на кнопке. В разное время кнопка может находиться в различных состояниях: обычном и утопленном (нажатом). В каждом из состояний надпись на ней может меняться. Например, в данном случае, когда пользователь впервые видит кнопку, на ней будет написано Press Me (Нажми меня). А когда он нажмет ее, надпись на кнопке изменится на I'm Pressed (Я нажата).

      Аналогичная ситуация складывается и с действиями, инициируемыми кнопкой. Мы используем метод addTarget: action: forControlEvents:, чтобы указать для нашей кнопки два действия:

      • действие, инициируемое, когда пользователь нажимает кнопку;

      • другое действие, происходящее, когда пользователь уже нажал кнопку и убирает палец с экрана. Такое событие называется окончанием нажатия кнопки (touch-inside-up).

      Еще одна вещь, которую необходимо знать о UIButton, заключается в том, что кнопке обязательно должен быть присвоен тип. Присваивание выполняется путем вызова метода класса buttonWithType на этапе инициализации, как показано в приведенном коде-примере. В качестве параметра этого метода передайте значение типа UIButtonType:

      typedef NS_ENUM(NSInteger, UIButtonType) {

      UIButtonTypeCustom = 0,

      UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0),

      UIButtonTypeRoundedRect,

      UIButtonTypeDetailDisclosure,

      UIButtonTypeInfoLight,

      UIButtonTypeInfoDark,

      UIButtonTypeContactAdd,

      UIButtonTypeRoundedRect = UIButtonTypeSystem,

      }

      Кроме того, на кнопке может находиться изображение, которое заменяет ее стандартный внешний вид. Если у вас есть изображение или серия изображений, которые вы хотите присвоить различным состояниям кнопки, убедитесь, что кнопка относится к типу UIButtonTypeCustom. Здесь я подготовил два изображения: одно для обычного состояния кнопки, а другое – для нажатого (утопленного). Сейчас я создам кнопку и присвою ей два этих изображения:

      UIImage *normalImage = [UIImage imageNamed:@"NormalBlueButton.png"];

      UIImage *highlightedImage = [UIImage imageNamed:@"HighlightedBlueButton"];

      self.myButton = [UIButton buttonWithType: UIButtonTypeCustom];

      self.myButton.frame = CGRectMake(110.0f,

      200.0f,

      100.0f,

      44.0f);

      [self.myButton setBackgroundImage: normalImage

      forState: UIControlStateNormal];

      [self.myButton setTitle:@"Normal"

      forState: UIControlStateNormal];

      [self.myButton setBackgroundImage: highlightedImage

      forState: UIControlStateHighlighted];

      [self.myButton setTitle:@"Pressed"

      forState: UIControlStateHighlighted];

      На рис. 1.59 показано, как выглядит приложение, если его запустить в эмуляторе iOS. Чтобы задать фоновое изображение, мы используем относящийся к кнопке метод setBackgroundImage: forState:. Работая с фоновым изображением, мы можем пользоваться методами setTitle: forState: для отображения текста поверх фонового изображения. Если ваше изображение содержит текст и, таким образом, никакой надписи на кнопке не требуется, можете

Скачать книгу