Intégrer des lecteurs dans SwiftUI
Utilisez VideoPlayer et des vues de lecteur personnalisées.
Intégrer des lecteurs dans SwiftUI est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.
Vidéo dans SwiftUI
SwiftUI fournit la vue VideoPlayer (issue de AVKit) pour intégrer déclarativement la lecture de médias, avec des contrôles intégrés.
import SwiftUI
import AVKitLa vue VideoPlayer
VideoPlayer accepte un AVPlayer et l’affiche avec les contrôles de lecture standard : lecture, pause, curseur de position et plein écran.
struct PlayerScreen: View {
let player = AVPlayer(url: URL(string: "https://example.com/v.mp4")!)
var body: some View {
VideoPlayer(player: player)
.frame(height: 240)
}
}Conserver le lecteur dans l’état
Stockez l’AVPlayer dans @State afin qu’il survive aux mises à jour de la vue. Le recréer à chaque appel de body redémarrerait la lecture.
struct PlayerScreen: View {
@State private var player = AVPlayer(
url: URL(string: "https://example.com/v.mp4")!)
var body: some View {
VideoPlayer(player: player)
}
}Contrôler la lecture
Contrôlez la lecture à partir des modificateurs du cycle de vie de SwiftUI : démarrez à l’apparition et mettez en pause à la disparition, afin d’éviter que l’audio continue hors écran.
VideoPlayer(player: player)
.onAppear { player.play() }
.onDisappear { player.pause() }Superposer du contenu
L’initialiseur de VideoPlayer accepte une fermeture de superposition pour placer une interface personnalisée au-dessus de la vidéo : titres, badges et légendes.
VideoPlayer(player: player) {
VStack {
Spacer()
Text("Live")
.padding(6)
.background(.red, in: Capsule())
}
}Lire en boucle
Pour lire en boucle, observez la notification de fin de l’élément et revenez à zéro avec une recherche. Un AVPlayerLooper associé à un lecteur de file constitue une autre option.
.onAppear {
NotificationCenter.default.addObserver(
forName: .AVPlayerItemDidPlayToEndTime,
object: player.currentItem, queue: .main) { _ in
player.seek(to: .zero); player.play()
}
}Session audio pour la vidéo
Configurez un AVAudioSession afin que l’audio de la vidéo se comporte correctement — en respectant le bouton de silence ou en continuant à être lu malgré celui-ci, selon vos besoins.
try? AVAudioSession.sharedInstance().setCategory(.playback)Lecteurs personnalisés avec UIViewRepresentable
Lorsque vous avez besoin d’une interface entièrement personnalisée (sans contrôles système), encapsulez un AVPlayerLayer dans un UIViewRepresentable au lieu d’utiliser VideoPlayer.
struct PlayerLayerView: UIViewRepresentable {
let player: AVPlayer
func makeUIView(context: Context) -> UIView { PlayerUIView(player: player) }
func updateUIView(_ uiView: UIView, context: Context) { }
}La UIView sous-jacente
La UIView personnalisée héberge un AVPlayerLayer et le redimensionne selon ses limites, ce qui vous fournit une surface vidéo sans contrôles.
final class PlayerUIView: UIView {
init(player: AVPlayer) {
super.init(frame: .zero)
let layer = AVPlayerLayer(player: player)
layer.videoGravity = .resizeAspectFill
self.layer.addSublayer(layer)
}
required init?(coder: NSCoder) { fatalError() }
}Image dans l’image
Pour l’image dans l’image, utilisez AVPictureInPictureController avec votre calque de lecteur et activez la fonctionnalité audio en arrière-plan.
let pip = AVPictureInPictureController(playerLayer: playerLayer)
pip?.startPictureInPicture()Nettoyage
Mettez le lecteur en pause et supprimez les observateurs lorsque la vue disparaît afin de libérer des ressources et d’arrêter la lecture audio en arrière-plan que vous ne souhaitiez pas lancer.
.onDisappear {
player.pause()
// remove notification observers here
}Vérification rapide : lecteurs SwiftUI
Vérifiez votre compréhension de l’intégration des lecteurs dans SwiftUI.
Récapitulatif : intégration de lecteurs dans SwiftUI
Le VideoPlayer d’AVKit intègre un AVPlayer avec des commandes standard ; conservez le lecteur dans @State pour garantir une instance stable et pilotez la lecture et la pause depuis onAppear/onDisappear. Ajoutez des superpositions via la fermeture finale et relancez la lecture à la notification de fin.
Pour une lecture personnalisée sans commandes, encapsulez un AVPlayerLayer dans un UIViewRepresentable et supprimez les observateurs à la disparition de la vue.
Apprends Swift avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 122
- Leçons
- 409
Questions Fréquemment Posées
La leçon « Intégrer des lecteurs dans SwiftUI » est-elle gratuite ?
Oui — le texte complet de « Intégrer des lecteurs dans SwiftUI » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Intégrer des lecteurs dans SwiftUI » ?
Utilisez VideoPlayer et des vues de lecteur personnalisées. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Swift Academy ?
Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Intégrer des lecteurs dans SwiftUI » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?
Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Lire des contenus multimédias avec AVPlayer
- Enregistrer de l’audio
- AVAsset et composition
- Intégrer des lecteurs dans SwiftUI