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

# UIFontPickerViewController

A view controller that manages the interface for selecting a font that the system provides or the user installs.

```
@MainActor class UIFontPickerViewController
```

## Overview

Use a [`UIFontPickerViewController`](/documentation/UIKit/UIFontPickerViewController) to provide the user access to all the fonts on their device. Directly querying [`UIFont`](/documentation/UIKit/UIFont) provides only system fonts, but the user may have additional fonts on their device. When the user selects one of these nonsystem fonts in the font picker, the system grants your app access to the font.

The font picker has several customization options collected into a [`UIFontPickerViewController.Configuration`](/documentation/UIKit/UIFontPickerViewController/Configuration-swift.class) object. For example, you can set [`includeFaces`](/documentation/UIKit/UIFontPickerViewController/Configuration-swift.class/includeFaces) to <doc://com.apple.documentation/documentation/Swift/true> so that the user can select not only the font but a bold or italic face within that font family. Customize the configuration object first, then pass it as an argument in the font picker’s [`init(configuration:)`](/documentation/UIKit/UIFontPickerViewController/init(configuration:)) method.

```swift
    func showFontPicker(_ sender: Any) {
        let fontConfig = UIFontPickerViewController.Configuration()
        fontConfig.includeFaces = true
        let fontPicker = UIFontPickerViewController(configuration: fontConfig)
        fontPicker.delegate = self
        self.present(fontPicker, animated: true, completion: nil)
    }
```

When your [`UIFontPickerViewControllerDelegate`](/documentation/UIKit/UIFontPickerViewControllerDelegate) receives [`fontPickerViewControllerDidPickFont(_:)`](/documentation/UIKit/UIFontPickerViewControllerDelegate/fontPickerViewControllerDidPickFont(_:)), retrieve information about the user’s selected font from the font picker’s [`selectedFontDescriptor`](/documentation/UIKit/UIFontPickerViewController/selectedFontDescriptor).

## Topics

### Configuring a font picker to display in iOS

[`init(configuration:)`](/documentation/UIKit/UIFontPickerViewController/init(configuration:))

Creates a controller for a font picker view.

[`configuration`](/documentation/UIKit/UIFontPickerViewController/configuration-swift.property)

Settings for fonts the font picker should offer to the user and how to display those fonts.

[`UIFontPickerViewController.Configuration`](/documentation/UIKit/UIFontPickerViewController/Configuration-swift.class)

The filters and display settings a font picker view controller uses to set up a font picker.

### Responding to font picker interactions

[`delegate`](/documentation/UIKit/UIFontPickerViewController/delegate)

The object that handles messages about the user’s interaction with a font picker.

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

A set of optional methods for receiving messages about the user’s interaction with the font picker.

[`selectedFontDescriptor`](/documentation/UIKit/UIFontPickerViewController/selectedFontDescriptor)

Information about the font family or face selected by the user in the font picker.



---

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)