Collection Views

Display nested views using a configurable and highly customizable layout.




An object that manages an ordered collection of data items and presents them using customizable layouts.


A view controller that specializes in managing a collection view.



An object that adopts the UICollectionViewDataSource protocol is responsible for providing the data and views required by a collection view. A data source object represents your app’s data model and vends information to the collection view as needed. It also handles the creation and configuration of cells and supplementary views used by the collection view to display your data.


A protocol that provides advance warning of the data requirements for a collection view, allowing the triggering of asynchronous data load operations.



A view that defines the behavior for all cells and supplementary views presented by a collection view.


A single data item when that item is within the collection view’s visible bounds.


Customizing Collection View Layouts

Customize a view layout by changing the size of cells in the flow or implementing a mosaic style.


An abstract base class for generating layout information for a collection view.


A concrete layout object that organizes items into a grid with optional header and footer views for each section.


A special type of layout object that lets you implement behaviors when changing from one layout to another in your collection view.


A layout object that manages the layout-related attributes for a given item in a collection view.

Compositional Layout Objects

Compose your layout from a set of objects that support more adaptive and flexible arrangements.

Using Collection View Compositional Layouts and Diffable Data Sources

Learn how to bring complex, high-performance layouts to your app, and simplify updating and managing your UI.

Layout Updates


An object that describes a single change to make to an item in a collection view.


A context object that stores information specific to a focus update in a collection view.


A context object that declares which parts of your layout need to be updated when the layout is invalidated.


A set of properties for determining whether to recompute the size of items or their position in the layout.

Selection Management

Changing the Appearance of Selected and Highlighted Cells

Provide visual feedback to the user about the state of a cell and the transition between states.

Selecting Multiple Items with a Two-Finger Pan Gesture

Accelerate user selection of multiple items using the multiselect gesture on table and collection views.

Drag and Drop

Supporting Drag and Drop in Collection Views

Initiate drags and handle drops from a collection view.


The interface for initiating drags from a collection view.


The interface for handling drops in a collection view.


An interface for coordinating your custom drop-related actions with the collection view.


Your proposed solution for handling a drop in a collection view.


The data associated with an item being dropped into the collection view.


An object that contains information about a placeholder in the collection view.


An advanced interface for managing a data source object.

See Also

Container Views

Table Views

Display data in a single column of customizable rows.


A streamlined interface for laying out a collection of views in either a column or a row.


A view that allows the scrolling and zooming of its contained views.