ios

Материалы по платформе iOS.

View on GitHub

Back

UIScrollView

Наследуется от: UIView
Родительский для: UITextView, UICollectionView, UITableView

Главная задача, которая стоит перед UIScrollView это расположить контент который не умещается в границах экрана. Расположенный внутри UIScrollView контент обрезается по границе фрейма, но тем ни менее есть возможность прокрутить контент внутри UIScrollView. Когда мы начинаем прокручивать, UIScrollView меняет contentOffset. Пример работы UIScrollView:

После прокрутки:


UIScrollViewDelegate

Scrolling

Методы делегата UIScrollView. Они помогают отслеживать что происходит с UIScrollView, как она реагирует на взаимодействие.

Dragging

Методы, которые вызываются только в ответ на пользовательское взаимодействие:

Zooming

Что бы заработало масштабирование, необходимо соблюдать три правила:

  1. Установить minimumZoomScale (от 0 до 1, по умолчанию 1)
  2. Установить maximumZoomScale (по умолчанию 1, может быть
  3. Определить метод делегата viewForZoomingInScrollView:

Working with UIScrollView

  1. Создаем UIScrollView Как и любой другой UIView, перетащите объект в сториборде, или создайте програмно alloc/initWithFrame: Или выберите UIView в сториборд и выберите “Embed In -> Scroll View” в меню редактора.

  2. Добавляем контент используя addSubview:
    UIImage *image = [UIImage imageNamed:@"bigimage.jpg"];
    UIImageView *iv = [[UIImageView alloc] initWithImage: image];
    [scrollView addSubview: iv];
    

    Все добавленные таким способом дочерние элементы будут находится в позиции (0,0)

  3. Не забудьте указать contentSize Распространенная ошибка заключается в том, чтобы сделать вышеупомянутые 3 строки кода (или встроить в Xcode) и забыть про: scrollView.contentSize = imageView.bounds.size

Scrolling programmatically

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;

Прокручивает содержимое к указанной области.

Альтернативный вариант:

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;

Здесь необходимо указать точку, к которой необходимо сделать отступ для UIScrollView