-
Mejora la experiencia con la cámara gracias a los controles de captura
Aprende a personalizar los controles de captura en tus experiencias con la cámara. Mostraremos cómo tomar fotos con los controles de captura, incluida la compatibilidad con los AirPods y cómo ajustar la configuración con Control de Cámara.
Capítulos
- 0:00 - Introducción
- 2:51 - Captura física
- 3:01 - Manejo de eventos
- 6:39 - Captura remota con AirPods
- 10:00 - Control de Cámara
Recursos
- Creating a camera experience for the Lock Screen
- Forum: Photos & Camera
- Supporting Continuity Camera in your tvOS app
- DockKit
- Creating a camera extension with Core Media I/O
- Accessing the camera while multitasking
- Supporting Continuity Camera in your macOS app
- Scanning data with the camera
- AVMultiCamPiP: Capturing from Multiple Cameras
- Capturing photos with depth
- AVFoundation
- Capture setup
Videos relacionados
WWDC24
WWDC23
-
Buscar este video…
-
-
5:35 - Initial PhotoCapture view setup
import SwiftUI struct PhotoCapture: View { var body: some View { VStack { CameraView() } } } -
5:37 - Connecting a button to the camera model
import SwiftUI struct PhotoCapture: View { let camera = CameraModel() var body: some View { VStack { CameraView() Button(action: camera.capturePhoto) { Text("Take a photo") } } } } -
6:10 - Importing AVKit
import AVKit import SwiftUI struct PhotoCapture: View { let camera = CameraModel() var body: some View { VStack { CameraView() Button(action: camera.capturePhoto) { Text("Take a photo") } } } } -
6:14 - Setting up onCameraCaptureEvent view modifier
import AVKit import SwiftUI struct PhotoCapture: View { let camera = CameraModel() var body: some View { VStack { CameraView() .onCameraCaptureEvent { event in if event.phase == .ended { camera.capturePhoto() } } Button(action: camera.capturePhoto) { Text("Take a photo") } } } } -
8:53 - Default sound for onCameraCaptureEvent view modifier
.onCameraCaptureEvent { event if event.phase == .ended { camera.capturePhoto() } } -
9:13 - Play photo shutter sound on AirPod stem click
.onCameraCaptureEvent(defaultSoundDisabled: true) { event in if event.phase == .ended {a if event.shouldPlaySound {d event.play(.cameraShutter) } } camera.capturePhoto() } -
14:46 - Add a build-in zoom slider to Camera Control
captureSession.beginConfiguration() // configure device inputs and outputs if captureSession.supportsControls { let zoomControl = AVCaptureSystemZoomSlider(device: device) if captureSession.canAddControl(zoomControl) { captureSession.addControl(zoomControl) } } captureSession.commitConfiguration() -
15:40 - Modifying the built-in zoom slider to receive updates when zoom changes
let zoomControl = AVCaptureSystemZoomSlider(device: device) { [weak self] zoomFactor in self?.updateUI(zoomFactor: zoomFactor) } -
16:46 - Adding a custom reaction-effects picker alongside zoom slider
let reactions = device.availableReactionTypes.sorted { $0.rawValue < $1.rawValue } let titles = reactions.map { localizedTitle(reaction: $0) } let picker = AVCaptureIndexPicker(“Reactions", symbolName: “face.smiling.inverted”, localizedIndexTitles: titles) picker.isEnabled = device.canPerformReactionEffects picker.setActionQueue(sessionQueue) { index in device.performEffect(for: reactions[index]) } let controls: [AVCaptureControl] = [zoomControl, picker] for control in controls { if captureSession.canAddControl(control) { captureSession.addControl(control) } }
-
-
- 0:00 - Introducción
Obtén más información sobre el uso de AVKit y AVFoundation para mejorar las interacciones del usuario en las apps de cámara. Ahora puedes asignar mediante programación gestos de botones físicos, como “subir y bajar” el volumen, a acciones de la cámara, lo que permite a las personas hacer fotos e iniciar la grabación de video con los botones del teléfono. Una nueva función de iOS 26 es el control remoto de la cámara con AirPods. Obtén información sobre los botones físicos compatibles, cómo usar la API AVCaptureEventInteraction y una descripción general de Control de cámara en el iPhone 16.
- 2:51 - Captura física
AVCaptureEventInteraction es compatible con el botón de acción; los detalles de configuración se pueden encontrar en la sesión del año pasado Extiende los controles de tu app a través del sistema.
- 3:01 - Manejo de eventos
AVCaptureEventInteraction es una API que te permite controlar el ciclo de vida de las pulsaciones de botones físicos dentro de las apps de la cámara. Proporciona tres fases de eventos: “comenzó”, “canceló” y “finalizó”. Esta fase "finalizó" en la que el objeto de la cámara debe iniciar la captura. La API distingue entre acciones principales y secundarias, activadas por botones específicos (bajar volumen, Acción, Control de cámara para la principal; subir el volumen para la secundaria). Este diseño permite modularidad y flexibilidad en el diseño de las apps. Los desarrolladores de SwiftUI pueden acceder a esta funcionalidad a través del modificador de vista “onCameraCaptureEvent”. Al importar la estructura de AVKit y adjuntar este modificador a CameraView, puedes habilitar la captura de fotos con botones físicos en solo unas pocas líneas de código, imitando el comportamiento de la app integrada Cámara.
- 6:39 - Captura remota con AirPods
A partir de iOS 26, los AirPods equipados con el chip H2 permitirán el control remoto de la cámara mediante clics del vástago. Los usuarios pueden configurar esta función en la app Ajustes y elegir qué acción de clic activa la captura de fotos. Se introdujo una nueva API para proporcionar comentarios de audio para estos clics de plicas, con un tono predeterminado, aunque puedes personalizar este sonido para tus apps específicas. Esta mejora permite a las personas capturar momentos con las manos libres y garantiza la confirmación de sus comandos mediante señales de audio.
- 10:00 - Control de Cámara
AVCaptureControl es una función nueva del iPhone 16 que permite crear controles físicos de hardware para las interfaces de la cámara. Permite a las personas iniciar apps de la cámara y ajustar la configuración rápidamente y puede actuar como un botón del obturador. El control admite dos tipos principales de ajustes: reguladores (continuos o discretos) para valores numéricos y selectores para elementos de una lista. Estos controles se definen en la estructura AVFoundation. Puedes añadir controles definidos por el sistema para el zoom o la exposición, o crear controles personalizados con comportamientos definidos por la app. Estos controles se añaden a una AVCaptureSession y la app responde a las interacciones a través de controladores de acciones o de observación de valores clave (KVO) y actualiza la IU en consecuencia. Para mejorar la funcionalidad de la app Cámara, utiliza Control de cámara para añadir fácilmente controles proporcionados por el sistema, como el zoom, que solo requiere una línea de código. Sin embargo, es fundamental asegurarse de que la sesión acepte el control y sincronizar la IU con el estado del control para evitar problemas como factores de zoom obsoletos. Al crear controles personalizados, ten en cuenta que Control de cámara está diseñado específicamente para capturar experiencias. Un buen ejemplo de control personalizado es un selector que permite a las personas seleccionar efectos o filtros. Este control debe funcionar más cerca de la sesión de captura que la IU. Puedes definir efectos, inicializar el selector con nombres de efecto y desactivar el control cuando no sea compatible. Al dirigir la acción a la cola de sesiones, puedes garantizar el aislamiento y la gestión adecuados del dispositivo. Con los Controles de captura puedes crear apps de cámara de primer nivel que capten la atención de las personas.