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

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

СКАЧАТЬ пальцем к элементу содержимого, переместить палец в другую точку на экране, а потом оторвать палец от экрана, не сдвинув содержимое самого вида ни на миллиметр. Этим перетаскивание и отличается от прокрутки. Прокрутка напоминает перетаскивание, но пользователь «сообщает импульс», приводящий к перемещению содержимого, если снимает палец с экрана, пока информация еще прокручивается. То есть пользователь убирает палец, не дождавшись завершения прокрутки. Перетаскивание можно сравнить с тем, как вы удерживаете педаль газа в машине или педаль велосипеда. Продолжая эту аналогию, можно сравнить прокрутку с движением по инерции на машине или велосипеде.

      Сделаем предыдущее приложение немного интереснее. Теперь нужно установить уровень яркости картинки в нашем виде с изображением (этот показатель также называется «альфа-уровень» или «альфа-значение») равным 0.50f (полупрозрачный) на момент, когда пользователь начинает прокрутку изображения, и вернуть этот уровень к значению 1.0f (непрозрачный) к моменту, когда прокрутка завершается. Сначала обеспечим соответствие протоколу UIScrollViewDelegate:

      #import "ViewController.h"

      @interface ViewController () <UIScrollViewDelegate>

      @property (nonatomic, strong) UIScrollView *myScrollView;

      @property (nonatomic, strong) UIImageView *myImageView;

      @end

      @implementation ViewController

      Потом реализуем данную функциональность:

      – (void)scrollViewDidScroll:(UIScrollView *)scrollView{

      /* Вызывается, когда пользователь совершает прокрутку

      или перетаскивание. */

      self.myScrollView.alpha = 0.50f;

      }

      – (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{

      /* Вызывается только после прокрутки. */

      self.myScrollView.alpha = 1.0f;

      }

      – (void)scrollViewDidEndDragging:(UIScrollView *)scrollView

      willDecelerate:(BOOL)decelerate{

      /* Гарантируем, что альфа-значение вернется к исходному,

      даже если пользователь просто перетаскивает элементы. */

      self.myScrollView.alpha = 1.0f;

      }

      – (void)viewDidLoad{

      [super viewDidLoad];

      UIImage *imageToLoad = [UIImage imageNamed:@"MacBookAir"];

      self.myImageView = [[UIImageView alloc] initWithImage: imageToLoad];

      self.myScrollView = [[UIScrollView alloc] initWithFrame: self.view.bounds];

      [self.myScrollView addSubview: self.myImageView];

      self.myScrollView.contentSize = self.myImageView.bounds.size;

      self.myScrollView.delegate = self;

      [self.view addSubview: self.myScrollView];

      }

      Как можно заметить, в прокручиваемых видах имеются индикаторы. Индикатор – это тонкая контрольная линия, которая отображается с краю прокручиваемого вида, когда его содержимое прокручивается или перемещается (рис. 1.63).

      Индикаторы просто показывают пользователю, как вид расположен в настоящий момент относительно его содержимого (в верхней части, на полпути к низу и т. д.). Внешним видом индикаторов можно управлять, изменяя значение свойства indicatorStyle. Например, в следующем коде я делаю индикатор прокручиваемого вида белым:

СКАЧАТЬ