<!--
{
  "availability" : [
    "iOS: 2.0.0 -",
    "iPadOS: 2.0.0 -",
    "macCatalyst: 13.1.0 -",
    "tvOS: -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "UIKit",
  "identifier" : "/documentation/UIKit/UIPageControl",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "UIKit"
    ],
    "preciseIdentifier" : "c:objc(cs)UIPageControl"
  },
  "title" : "UIPageControl"
}
-->

# UIPageControl

A control that displays a horizontal series of dots, each of which corresponds to a page in the app’s document or other data-model entity.

```
@MainActor class UIPageControl
```

## Overview

For an example of a page control, see the Weather app when it’s configured to display information for more than one location.

When a user taps a page control to move to the next or previous page, the control sends the [`valueChanged`](/documentation/UIKit/UIControl/Event/valueChanged) event for handling by the delegate. The delegate can then evaluate the [`currentPage`](/documentation/UIKit/UIPageControl/currentPage) property to determine the page to display. The page control advances only one page in either direction. The currently viewed page is indicated by a white dot. Depending on the device, a certain number of dots are displayed on the screen before they’re clipped.

## Topics

### Managing pages

[`currentPage`](/documentation/UIKit/UIPageControl/currentPage)

The current page, shown by the page control as a white dot.

[`numberOfPages`](/documentation/UIKit/UIPageControl/numberOfPages)

The number of pages the receiver shows (as dots).

[`hidesForSinglePage`](/documentation/UIKit/UIPageControl/hidesForSinglePage)

A Boolean value that controls whether the page control is hidden when there is only one page.

[`defersCurrentPageDisplay`](/documentation/UIKit/UIPageControl/defersCurrentPageDisplay)

A Boolean value that controls when the current page is displayed.

[`updateCurrentPageDisplay()`](/documentation/UIKit/UIPageControl/updateCurrentPageDisplay())

Updates the page indicator to the current page.

### Coloring the page indicator

[`pageIndicatorTintColor`](/documentation/UIKit/UIPageControl/pageIndicatorTintColor)

The tint color to apply to the page indicator.

[`currentPageIndicatorTintColor`](/documentation/UIKit/UIPageControl/currentPageIndicatorTintColor)

The tint color to apply to the current page indicator.

### Managing the indicator images

[`preferredIndicatorImage`](/documentation/UIKit/UIPageControl/preferredIndicatorImage)

The preferred image for indicators.

[`indicatorImage(forPage:)`](/documentation/UIKit/UIPageControl/indicatorImage(forPage:))

Returns the override image for the indicator of the specified page.

[`setIndicatorImage(_:forPage:)`](/documentation/UIKit/UIPageControl/setIndicatorImage(_:forPage:))

Registers an override image for the indicator of the specified page.

[`preferredCurrentPageIndicatorImage`](/documentation/UIKit/UIPageControl/preferredCurrentPageIndicatorImage)

The preferred image for the current page indicator.

[`currentPageIndicatorImage(forPage:)`](/documentation/UIKit/UIPageControl/currentPageIndicatorImage(forPage:))

Returns the override image for the current page indicator of the specified page.

[`setCurrentPageIndicatorImage(_:forPage:)`](/documentation/UIKit/UIPageControl/setCurrentPageIndicatorImage(_:forPage:))

Registers an override image for the current page indicator of the specified page.

### Customizing the layout direction

[`direction`](/documentation/UIKit/UIPageControl/direction-swift.property)

The layout direction of the page indicators.

[`UIPageControl.Direction`](/documentation/UIKit/UIPageControl/Direction-swift.enum)

Decribes the layout direction of a page control’s indicators.

### Customizing the background style

[`backgroundStyle`](/documentation/UIKit/UIPageControl/backgroundStyle-swift.property)

The preferred background style.

[`UIPageControl.BackgroundStyle`](/documentation/UIKit/UIPageControl/BackgroundStyle-swift.enum)

Constants that define the background styles of the page control.

### Customizing the interaction state

[`allowsContinuousInteraction`](/documentation/UIKit/UIPageControl/allowsContinuousInteraction)

A Boolean value that determines whether the page control allows continuous interaction.

[`interactionState`](/documentation/UIKit/UIPageControl/interactionState-swift.property)

The interaction state when the current page changes.

[`UIPageControl.InteractionState`](/documentation/UIKit/UIPageControl/InteractionState-swift.enum)

Constants that define the interaction states of the page control.

### Calculating the control size

[`size(forNumberOfPages:)`](/documentation/UIKit/UIPageControl/size(forNumberOfPages:))

Returns the size the receiver’s bounds should be to accommodate the given number of pages.

### Configuring page progress

[`progress`](/documentation/UIKit/UIPageControl/progress)

An object that defines the progress of the page control. Default is nil.

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

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

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

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



---

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)