<!--
{
  "documentType" : "article",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/collection-views",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Collection views"
}
-->

# Collection views

Display nested views using a configurable and highly customizable layout.

## Discussion

A collection view manages an ordered set of content, such as the grid of photos in the Photos app, and presents it visually.

![A screenshot of the Photos app showing photos organized in the Months view.](images/com.apple.uikit/collection-views-1@2x.png)

Collection views are a collaboration between many different objects, including:

- Cells. A cell provides the visual representation for each piece of your content.
- Layouts. A layout defines the visual arrangement of the content in the collection view.
- Your data source object. This object adopts the [`UICollectionViewDataSource`](/documentation/UIKit/UICollectionViewDataSource) protocol and provides the data for the collection view.
- Your delegate object. This object adopts the [`UICollectionViewDelegate`](/documentation/UIKit/UICollectionViewDelegate) protocol and manages user interactions with the collection view’s contents, like selection and highlighting.
- Collection view controller. You typically use a [`UICollectionViewController`](/documentation/UIKit/UICollectionViewController) object to manage a collection view. You can use other view controllers too, but a collection view controller is required for some collection-related features to work.

## Topics

### View

[`UICollectionView`](/documentation/UIKit/UICollectionView)

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

[`UICollectionViewController`](/documentation/UIKit/UICollectionViewController)

A view controller that specializes in managing a collection view.

### Data

[Updating collection views using diffable data sources](/documentation/UIKit/updating-collection-views-using-diffable-data-sources)

Streamline the display and update of data in a collection view using a diffable data source that contains identifiers.

[Implementing modern collection views](/documentation/UIKit/implementing-modern-collection-views)

Bring compositional layouts to your app and simplify updating your user interface with diffable data sources.

[Building high-performance lists and collection views](/documentation/UIKit/building-high-performance-lists-and-collection-views)

Improve the performance of lists and collections in your app with prefetching and image preparation.

[`UICollectionViewDiffableDataSource`](/documentation/UIKit/UICollectionViewDiffableDataSource-9tqpa)

The object you use to manage data and provide cells for a collection view.

[`UICollectionViewDataSource`](/documentation/UIKit/UICollectionViewDataSource)

The methods adopted by the object you use to manage data and provide cells for a collection view.

[`UICollectionViewDataSourcePrefetching`](/documentation/UIKit/UICollectionViewDataSourcePrefetching)

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

[`NSDiffableDataSourceSnapshot`](/documentation/UIKit/NSDiffableDataSourceSnapshot-swift.struct)

A representation of the state of the data in a view at a specific point in time.

[`NSDiffableDataSourceSectionSnapshot`](/documentation/UIKit/NSDiffableDataSourceSectionSnapshot-swift.struct)

A representation of the state of the data in a layout section at a specific point in time.

[`UIRefreshControl`](/documentation/UIKit/UIRefreshControl)

A standard control that can initiate the refreshing of a scroll view’s contents.

### Data

[Updating collection views using diffable data sources](/documentation/UIKit/updating-collection-views-using-diffable-data-sources)

Streamline the display and update of data in a collection view using a diffable data source that contains identifiers.

[Implementing modern collection views](/documentation/UIKit/implementing-modern-collection-views)

Bring compositional layouts to your app and simplify updating your user interface with diffable data sources.

[Building high-performance lists and collection views](/documentation/UIKit/building-high-performance-lists-and-collection-views)

Improve the performance of lists and collections in your app with prefetching and image preparation.

[`UICollectionViewDiffableDataSourceReference`](/documentation/UIKit/UICollectionViewDiffableDataSourceReference)

The object you use to manage data and provide cells for a collection view.

[`UICollectionViewDataSource`](/documentation/UIKit/UICollectionViewDataSource)

The methods adopted by the object you use to manage data and provide cells for a collection view.

[`UICollectionViewDataSourcePrefetching`](/documentation/UIKit/UICollectionViewDataSourcePrefetching)

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

[`NSDiffableDataSourceSnapshotReference`](/documentation/UIKit/NSDiffableDataSourceSnapshotReference)

A representation of the state of the data in a view at a specific point in time.

[`NSDiffableDataSourceSectionSnapshotReference`](/documentation/UIKit/NSDiffableDataSourceSectionSnapshotReference)

A representation of the state of the data in a layout section at a specific point in time.

[`UIRefreshControl`](/documentation/UIKit/UIRefreshControl)

A standard control that can initiate the refreshing of a scroll view’s contents.

### Cells

[`UICollectionViewCell`](/documentation/UIKit/UICollectionViewCell)

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

[`UICollectionViewListCell`](/documentation/UIKit/UICollectionViewListCell)

A collection view cell that provides list features and default styling.

[`UICollectionReusableView`](/documentation/UIKit/UICollectionReusableView)

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

### Layouts

[Implementing modern collection views](/documentation/UIKit/implementing-modern-collection-views)

Bring compositional layouts to your app and simplify updating your user interface with diffable data sources.

[Layouts](/documentation/UIKit/layouts)

Arrange your collection view content in a highly configurable layout.

### Selection management

[Changing the appearance of selected and highlighted cells](/documentation/UIKit/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](/documentation/UIKit/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](/documentation/UIKit/supporting-drag-and-drop-in-collection-views)

Initiate drags and handle drops from a collection view.

[`UICollectionViewDragDelegate`](/documentation/UIKit/UICollectionViewDragDelegate)

The interface for initiating drags from a collection view.

[`UICollectionViewDropDelegate`](/documentation/UIKit/UICollectionViewDropDelegate)

The interface for handling drops in a collection view.

[`UICollectionViewDropCoordinator`](/documentation/UIKit/UICollectionViewDropCoordinator)

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

[`UICollectionViewDropPlaceholder`](/documentation/UIKit/UICollectionViewDropPlaceholder)

A placeholder for an item dropped on a collection view.

[`UICollectionViewDropProposal`](/documentation/UIKit/UICollectionViewDropProposal)

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

[`UICollectionViewDropItem`](/documentation/UIKit/UICollectionViewDropItem)

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

[`UICollectionViewDropPlaceholderContext`](/documentation/UIKit/UICollectionViewDropPlaceholderContext)

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

[`UIDataSourceTranslating`](/documentation/UIKit/UIDataSourceTranslating)

An advanced interface for managing a data source object.

[`UICollectionViewPlaceholder`](/documentation/UIKit/UICollectionViewPlaceholder)

A placeholder for an item dragged or dropped on a collection view.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)