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

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

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

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

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

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

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

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

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

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

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

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

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