---
title: PHPickerViewController
framework: photosui
role: symbol
role_heading: Class
path: photosui/phpickerviewcontroller
---

# PHPickerViewController

A view controller that provides the user interface for choosing assets from the photo library.

## Declaration

```swift
class PHPickerViewController
```

## Mentioned in

Delivering an Enhanced Privacy Experience in Your Photos App

## Overview

Overview The PHPickerViewController class is an alternative to UIImagePickerController. PHPickerViewController improves stability and reliability, and includes several benefits to developers and users, such as the following: Deferred image loading and recovery UI Reliable handling of large and complex assets, like RAW and panoramic images User-selectable assets that aren’t available for UIImagePickerController Configuration of the picker to display only Live Photos Availability of PHLivePhoto objects without library access Stricter validations against invalid inputs Observe required viewing standards As a view controller that the system renders on top of your app, the picker controller requires certain prerequisites for operation that your app needs to observe: The picker controller disables user interaction if an app alters its visibility, such as by adjusting the opacity of its view’s layer. In iOS 17 and later, the picker controller ignores touch events while its opacity is anything other than fully opaque. As a system-rendered UI, you can’t subclass PHPickerViewController. Its view hierarchy belongs to the system and therefore, the framework provides no access.

## Topics

### Creating a picker

- [init(configuration:)](photosui/phpickerviewcontroller/init(configuration:).md)
- [PHPickerConfiguration](photosui/phpickerconfiguration-swift.struct.md)

### Managing the configuration

- [configuration](photosui/phpickerviewcontroller/configuration-17a8p.md)
- [updatePicker(using:)](photosui/phpickerviewcontroller/updatepicker(using:).md)

### Setting content position and scale

- [scrollToInitialPosition()](photosui/phpickerviewcontroller/scrolltoinitialposition().md)
- [zoomIn()](photosui/phpickerviewcontroller/zoomin().md)
- [zoomOut()](photosui/phpickerviewcontroller/zoomout().md)

### Responding to user selection

- [delegate](photosui/phpickerviewcontroller/delegate-3zqmt.md)
- [PHPickerViewControllerDelegate](photosui/phpickerviewcontrollerdelegate-5yntc.md)
- [PHPickerResult](photosui/phpickerresult-swift.struct.md)

### Deselecting assets

- [deselectAssets(withIdentifiers:)](photosui/phpickerviewcontroller/deselectassets(withidentifiers:).md)

### Reordering assets

- [moveAsset(withIdentifier:afterAssetWithIdentifier:)](photosui/phpickerviewcontroller/moveasset(withidentifier:afterassetwithidentifier:).md)

## Relationships

### Inherits From

- [NSViewController](appkit/nsviewcontroller.md)
- [UIViewController](uikit/uiviewcontroller.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSEditor](appkit/nseditor.md)
- [NSExtensionRequestHandling](foundation/nsextensionrequesthandling.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSSeguePerforming](appkit/nssegueperforming.md)
- [NSStandardKeyBindingResponding](appkit/nsstandardkeybindingresponding.md)
- [NSTouchBarProvider](appkit/nstouchbarprovider.md)
- [NSUserActivityRestoring](appkit/nsuseractivityrestoring.md)
- [NSUserInterfaceItemIdentification](appkit/nsuserinterfaceitemidentification.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [UIActivityItemsConfigurationProviding](uikit/uiactivityitemsconfigurationproviding.md)
- [UIAppearanceContainer](uikit/uiappearancecontainer.md)
- [UIContentContainer](uikit/uicontentcontainer.md)
- [UIFocusEnvironment](uikit/uifocusenvironment.md)
- [UIPasteConfigurationSupporting](uikit/uipasteconfigurationsupporting.md)
- [UIResponderStandardEditActions](uikit/uiresponderstandardeditactions.md)
- [UIStateRestoring](uikit/uistaterestoring.md)
- [UITraitChangeObservable](uikit/uitraitchangeobservable-67e94.md)
- [UITraitEnvironment](uikit/uitraitenvironment.md)
- [UIUserActivityRestoring](uikit/uiuseractivityrestoring.md)

## See Also

### Photos picker for UIKit, AppKit

- [Selecting Photos and Videos in iOS](photokit/selecting-photos-and-videos-in-ios.md)
- [PHPickerViewControllerDelegate](photosui/phpickerviewcontrollerdelegate-5yntc.md)
- [PHPickerConfiguration](photosui/phpickerconfiguration-swift.struct.md)
- [PHPickerFilter](photosui/phpickerfilter-swift.struct.md)
- [PHPickerResult](photosui/phpickerresult-swift.struct.md)
