SCours SwiftUI
Fiche 12.02

Fiche 12.02 — PhotosPicker et caméra

Objectif

Savoir choisir une photo avec PhotosPicker et comprendre comment gérer la caméra si nécessaire.

1. PhotosPicker

PhotosPicker permet de sélectionner une image dans la galerie avec SwiftUI.

Swift
import SwiftUI import PhotosUI struct PhotoSelectionView: View { @State private var selectedItem: PhotosPickerItem? @State private var selectedImage: Image? var body: some View { VStack { if let selectedImage { selectedImage .resizable() .scaledToFit() .frame(height: 200) } PhotosPicker("Choisir une photo", selection: $selectedItem, matching: .images) } .onChange(of: selectedItem) { _, newItem in Task { await loadImage(from: newItem) } } } private func loadImage(from item: PhotosPickerItem?) async { guard let item, let data = try? await item.loadTransferable(type: Data.self), let uiImage = UIImage(data: data) else { return } selectedImage = Image(uiImage: uiImage) } }

2. Récupérer un UIImage

Pour uploader vers Firebase Storage ou une API, tu as souvent besoin d’un UIImage ou de Data.

Swift
@State private var selectedUIImage: UIImage? private func loadUIImage(from item: PhotosPickerItem?) async { guard let item, let data = try? await item.loadTransferable(type: Data.self) else { return } selectedUIImage = UIImage(data: data) }

3. Upload après sélection

Swift
if let selectedUIImage { Task { await viewModel.uploadAvatar(selectedUIImage) } }

Le ViewModel peut ensuite envoyer l’image vers Firebase Storage ou vers une API REST.

4. Caméra

SwiftUI n’a pas toujours une solution native aussi directe que PhotosPicker pour la caméra.

Souvent, on utilise UIKit avec :

Texte
UIImagePickerController → UIViewControllerRepresentable → Coordinator → retour de l’image vers SwiftUI

C’est pour ça que la partie UIKit interop est utile.

5. Permission caméra

Il faut ajouter dans Info.plist :

Texte
NSCameraUsageDescription

Exemple de texte :

Texte
Nous utilisons la caméra pour vous permettre de prendre une photo de profil.

6. Choisir entre galerie et caméra

Exemple de choix UX :

Texte
Changer la photo → Choisir depuis la galerie → Prendre une photo → Annuler

En SwiftUI, on peut présenter ce choix avec confirmationDialog.

Résumé

  • PhotosPicker est la solution SwiftUI moderne pour choisir une image.
  • Pour uploader, il faut souvent récupérer Data ou UIImage.
  • La caméra peut nécessiter UIKit via UIImagePickerController.
  • Il faut déclarer la permission caméra dans Info.plist.
  • Le flux classique est : sélectionner image → convertir → uploader → sauvegarder URL.