Описание тега uicollectionview

Класс UICollectionView управляет упорядоченным набором элементов данных и представляет их с помощью настраиваемых макетов. Представления коллекции обеспечивают ту же общую функцию, что и представления таблиц, за исключением того, что представление коллекции может поддерживать не только макеты с одним столбцом. Представления коллекций поддерживают настраиваемые макеты, которые можно использовать для реализации многоколоночных сеток, мозаичных макетов, круговых макетов и многого другого. Доступно в iOS 6.0 и новее

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

При добавлении представления коллекции в пользовательский интерфейс основная задача вашего приложения - управлять данными, связанными с этим представлением коллекции. Представление коллекции получает свои данные из объекта источника данных, который является объектом, который соответствует протоколу UICollectionViewDataSource и предоставляется вашим приложением. Данные в представлении коллекции организованы в отдельные элементы, которые затем могут быть сгруппированы в разделы для представления. Элемент - это наименьшая единица данных, которую вы хотите представить. Например, в приложении для фотографий элементом может быть одно изображение. В представлении коллекции элементы отображаются на экране с помощью ячейки, которая является экземпляром класса UICollectionViewCell, который настраивает и предоставляет ваш источник данных.

Помимо ячеек, представление коллекции может представлять данные также с использованием других типов представлений. Этими дополнительными представлениями могут быть такие вещи, как верхние и нижние колонтитулы разделов, которые отделены от отдельных ячеек, но все же передают некоторую информацию. Поддержка дополнительных представлений является необязательной и определяется объектом макета представления коллекции, который также отвечает за определение размещения этих представлений.

Помимо встраивания его в пользовательский интерфейс, вы используете методы объекта UICollectionView, чтобы гарантировать, что визуальное представление элементов соответствует порядку в вашем объекте источника данных. Таким образом, всякий раз, когда вы добавляете, удаляете или переупорядочиваете данные в своей коллекции, вы используете методы этого класса для вставки, удаления и перегруппировки соответствующих ячеек. Вы также используете объект представления коллекции для управления выбранными элементами, хотя для этого поведения представление коллекции работает со связанным с ним объектом делегата.

Представления коллекций и объекты макета

Очень важным объектом, связанным с представлением коллекции, является объект макета, который является подклассом класса UICollectionViewLayout. Объект макета отвечает за определение организации и расположения всех ячеек и дополнительных представлений внутри представления коллекции. Хотя он определяет их расположение, объект макета фактически не применяет эту информацию к соответствующим представлениям. Поскольку создание ячеек и дополнительных представлений включает в себя координацию между представлением коллекции и объектом источника данных, представление коллекции фактически применяет информацию макета к представлениям. Таким образом, в некотором смысле объект макета похож на другой источник данных, предоставляя только визуальную информацию вместо данных элемента.

Обычно вы указываете объект макета при создании представления коллекции, но вы также можете динамически изменять макет представления коллекции. Объект макета хранится в свойстве collectionViewLayout. Установка этого свойства немедленно обновляет макет без анимации изменений. Если вы хотите анимировать изменения, вы должны вместо этого вызвать метод setCollectionViewLayout: animated: completion:.

Если вы хотите создать интерактивный переход, управляемый распознавателем жестов или событиями касания, используйте метод startInteractiveTransitionToCollectionViewLayout: Завершение: для изменения объекта макета. Этот метод устанавливает промежуточный объект макета, цель которого - работать с вашим распознавателем жестов или кодом обработки событий для отслеживания хода перехода. Когда ваш код обработки событий определяет, что переход завершен, он вызывает метод finishInteractiveTransition или cancelInteractiveTransition для удаления промежуточного объекта макета и установки предполагаемого целевого объекта макета.

Создание ячеек и дополнительных представлений

Объект источника данных представления коллекции предоставляет как содержимое для элементов, так и представления, используемые для представления этого содержимого. Когда представление коллекции впервые загружает свое содержимое, оно запрашивает у источника данных представление для каждого видимого элемента. Чтобы упростить процесс создания кода, представление коллекции требует, чтобы вы всегда удаляли представления из очереди, а не создавали их явно в коде. Есть два метода удаления представлений из очереди. Тот, который вы используете, зависит от того, какой тип представления был запрошен:

Перед вызовом любого из этих методов вы должны указать представлению коллекции, как создать соответствующее представление, если оно еще не существует. Для этого вы должны зарегистрировать либо класс, либо файл пера в представлении коллекции. Например, при регистрации ячеек вы используете registerClass:forCellWithReuseIdentifier: или registerNib:forCellWithReuseIdentifier: метод. В процессе регистрации вы указываете идентификатор повторного использования, который определяет цель представления. Это та же строка, которую вы используете при удалении представления из очереди позже.

После удаления из очереди соответствующего представления в методе делегата настройте его содержимое и верните его в представление коллекции для использования. После получения информации о макете от объекта макета представление коллекции применяет его к представлению и отображает его.