Основы представления набора

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

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

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

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

Таблица 1-1  классы и протоколы для реализации представлений набора

Цель

Классы/Протоколы

Описание

Включение верхнего уровня и управление

UICollectionView

UICollectionViewController

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

A UICollectionViewController объект предоставляет поддержку управления уровня контроллера представления для представления набора. Его использование является дополнительным.

Управление контентом

UICollectionViewDataSource протокол

UICollectionViewDelegate протокол

Объект источника данных является самым важным объектом, связанным с представлением набора, и является тем, который необходимо обеспечить. Источник данных управляет содержанием представления набора и создает представления, должен был представить то содержание. Для реализации объекта источника данных необходимо создать объект, соответствующий UICollectionViewDataSource протокол.

Делегат представления набора объект позволяет Вам прервать интересные сообщения от набора, просматривает и настраивает поведение представления. Например, Вы используете объект делегата отследить выбор и выделение элементов в представлении набора. В отличие от объекта источника данных, объект делегата является дополнительным.

Для получения информации о том, как реализовать источник данных и объекты делегата, посмотрите Разработку Вашего Источника данных и Делегата.

Представление

UICollectionReusableView

UICollectionViewCell

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

A UICollectionViewCell объект является определенным типом допускающего повторное использование представления, что Вы используете для своих основных элементов данных.

Расположение

UICollectionViewLayout

UICollectionViewLayoutAttributes

UICollectionViewUpdateItem

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

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

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

Для получения дополнительной информации об объекте расположения, посмотрите Средства управления Объектом Расположения Визуальное Представление.

Перетекающий макет

UICollectionViewFlowLayout

UICollectionViewDelegateFlowLayout протокол

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

Рисунок 1-1 показывает отношение между базовыми объектами, связанными с представлением набора. Представление набора получает информацию о ячейках для отображения от ее источника данных. Источник данных и объекты делегата являются пользовательскими объектами, предоставленными Вашим приложением и используемыми для управления содержанием, включая выбор и выделение ячеек. Объект расположения ответственен за решение, где те ячейки принадлежат и за отправку той информации к представлению набора в форме одного или более объектов атрибута макета. Представление набора тогда объединяет информацию макета с фактическими ячейками (и другие представления) для создания заключительного визуального представления.

  Содержание Слияния рисунка 1-1 и расположение для создания итоговой презентации

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

Допускающие повторное использование представления улучшают производительность

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

Представления набора поддерживают три отличных типа допускающих повторное использование представлений, каждое из которых имеет определенное намеченное использование:

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

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

Для получения информации о том, как создать и сконфигурировать представления от Вашего источника данных, видит Ячейки Конфигурирования и Дополнительные Представления.

Объект расположения управляет визуальным представлением

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

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

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

Рисунок 1-2 показывает, как вертикально прокручивающий перетекающий макет располагает свои ячейки и дополнительные представления. В вертикально прокручивающем перетекающем макете ширина предметной области остается фиксированной, и высота растет для размещения содержания. Для вычислений области расположение возражает представлениям мест и ячейкам по одному, выбирая самое надлежащее расположение для каждого. В случае перетекающего макета размер ячеек и дополнительных представлений указан как свойства, или на объекте расположения или при помощи делегата. Вычисления расположения являются просто вопросом использования тех свойств для размещения каждого представления.

Рисунок 1-2  объект расположения обеспечивает метрики расположения

Объекты расположения управляют больше, чем просто размер и позиция их представлений. Объект расположения может указать другие связанные с представлением атрибуты, такие как его прозрачность, его преобразование в 3D пространстве и его видимость (если таковые имеются) выше или ниже других представлений. Эти атрибуты позволяют Вам создать более интересные разметки. Например, Вы могли бы создать штабели ячеек путем размещения представлений поверх друг друга и изменения их z-упорядочивания, или Вы могли бы использовать преобразование для вращения их на любой оси.

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

Представления набора инициируют анимации автоматически

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

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