-
Build a great camera experience for iPhone Duo
Discover how to leverage the outer and inner cameras on iPhone Duo. Explore the Virtual Front Camera, and find out how to use the direction coordinator to switch between cameras and update your UI as people open and close iPhone Duo. Learn best practices for handling preview aspect ratios, positioning, and rotation to deliver a seamless capture experience.
Capítulos
- 0:00 - Introduction
- 0:31 - Meet the new front cameras
- 0:58 - Discover the virtual front camera
- 1:53 - Access each camera individually
- 2:46 - Track camera direction
- 4:03 - Create a direction coordinator
- 4:50 - Use both displays at once
- 5:38 - Work with device descriptors
- 6:17 - Handle a direction change
- 7:03 - Polish your camera preview
- 8:03 - Handle rotation
- 8:47 - Next steps
Recursos
Videos relacionados
WWDC26
Tech Talks
-
Buscar este video…
-
-
3:00 - Understand AVCaptureDevicePosition
enum AVCaptureDevicePosition: Int { case unspecified case back case front } extension AVCaptureDevice { // ... var position: AVCaptureDevicePosition { get } } -
4:06 - Initialize a direction coordinator
directionCoordinator = AVCaptureDeviceDirectionCoordinator( view: view, deviceTypes: [ .builtInOuterUltraWideCamera, .builtInInnerUltraWideCamera, .builtInDualWideCamera, ], changeHandler: { [weak self] map in self?.updateCameraSession(map) } ) -
7:30 - Configure the video preview layer
class AVCaptureVideoPreviewLayer { // ... var videoGravity: AVLayerVideoGravity { get set } } -
7:51 - Select a dynamic aspect ratio
class AVCaptureDevice { // ... var dynamicAspectRatio: AVCaptureDevice.AspectRatio? { get } } -
8:34 - Disable sensor orientation compensation
// Disable for improved performance class AVCapturePhotoOutput: AVCaptureOutput { // ... var isCameraSensorOrientationCompensationEnabled: Bool { get set } }
-
-
- 0:00 - Introduction
Tarun from the camera software team introduces the new camera features on iPhone Duo: the new front cameras, handling camera direction changes when people open or close the device, and tips for polishing your app's camera preview.
- 0:31 - Meet the new front cameras
iPhone Duo is the first iPhone with two front cameras, both square sensors with an ultrawide field of view. The outer ultrawide camera sits on the outside of the device, while opening it reveals the inner ultrawide camera — the first under-display camera on iPhone.
- 0:58 - Discover the virtual front camera
Stream from the front cameras through AVFoundation, using AVCaptureDeviceDiscoverySession with position .front and the wide or ultrawide device type. On iPhone Duo this discovers the new virtual front camera, which automatically switches between the inner physical camera when open and the outer one when closed, always using the most relevant camera for your app.
- 1:53 - Access each camera individually
Each front camera has its own AVCaptureDevice type — built-in outer ultrawide and built-in inner ultrawide — giving access to each camera's full capabilities. The inner camera supports 1080p up to 60fps, the outer up to 4K and 120fps. The virtual front camera exposes only features common to both, meaning 1080p and 60fps, and depth is supported only when accessing the individual cameras.
- 2:46 - Track camera direction
When using individual cameras, your app is responsible for switching as people open or close the device — use the new AVCaptureDeviceDirectionCoordinator. AVCaptureDevice's position property has always been back or front, and both front cameras report front, but on iPhone Duo the displays can face opposite directions, so a front camera isn't always looking at you. The coordinator keeps your app up to date on where cameras are facing.
- 4:03 - Create a direction coordinator
A direction coordinator needs three things: your app's UIView, the device types to monitor, and a change handler. When your view is on the outer display, outer front cameras report as forward-facing and rear cameras as backward-facing. Opening the device moves your view to the inner display and calls your change handler, which then reports the inner front camera as forward-facing.
- 4:50 - Use both displays at once
A camera app can use both displays simultaneously — useful for a group video call, or for showing a child something fun while photographing them. With a separate UIView per display, create a separate direction coordinator for each, since each reports positions relative to its own view. Camera apps enable this with the SceneAccessories API, covered in "Leverage multiple displays and scenes on iPhone Duo".
- 5:38 - Work with device descriptors
Because the direction coordinator is tied to a view, it's isolated to the main actor, so your change handler shouldn't use AVFoundation APIs directly. Instead of an AVCaptureDevice, the coordinator provides an AVCaptureDeviceDescriptor — a main-actor-safe, sendable representation containing everything needed to create an AVCaptureDevice, which you can safely pass to your camera actor.
- 6:17 - Handle a direction change
When your change handler is called, reconfigure your AVCaptureSession to keep streaming from the forward-facing camera. Consider how the new direction affects mirroring — mirror the preview when the rear camera is forward-facing for a natural selfie experience — and perform any UI updates your app needs. The direction coordinator is found in AVKit.
- 7:03 - Polish your camera preview
Streaming the rear camera's full field of view on the inner display leaves extra space around the preview: offset the preview to group controls in the remaining space, or let it fill the display. Use videoGravity on AVCaptureVideoPreviewLayer to control layout within the layer bounds. When streaming from the ultrawide front cameras, use dynamicAspectRatio on AVCaptureDevice to select a landscape aspect ratio and fill the display.
- 8:03 - Handle rotation
Adopt AVCaptureDeviceRotationCoordinator to keep your camera preview and photos upright. On iPhone Duo it updates when your app moves between displays, so rotation is applied consistently. After adopting it, disable camera sensor orientation compensation — enabled on all iPhone Duo front cameras — to improve performance.
- 8:47 - Next steps
Use the iOS 27.1 SDK to take full advantage of iPhone Duo, decide how your app will handle switching cameras when the device opens or closes, adopt a direction coordinator if you want to move beyond the virtual front camera, and test that your camera preview looks great.