Swift Academy · Lezione

Integrazione dei player in SwiftUI

Usi VideoPlayer e view player personalizzate.

Lezione 4 di 413 passaggi

Integrazione dei player in SwiftUI è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Video in SwiftUI

SwiftUI fornisce la vista VideoPlayer (da AVKit) per integrare la riproduzione multimediale in modo dichiarativo, con controlli integrati.

import SwiftUI
import AVKit

La vista VideoPlayer

VideoPlayer accetta un AVPlayer ed esegue il rendering con i controlli standard della riproduzione: riproduzione, pausa, barra di scorrimento e schermo intero.

struct PlayerScreen: View {
    let player = AVPlayer(url: URL(string: "https://example.com/v.mp4")!)
    var body: some View {
        VideoPlayer(player: player)
            .frame(height: 240)
    }
}

Mantenere il player nello stato

Conservare AVPlayer in @State affinché sopravviva agli aggiornamenti della vista. Ricrearlo a ogni chiamata di body farebbe ricominciare la riproduzione.

struct PlayerScreen: View {
    @State private var player = AVPlayer(
        url: URL(string: "https://example.com/v.mp4")!)
    var body: some View {
        VideoPlayer(player: player)
    }
}

Controllare la riproduzione

Gestire la riproduzione dai modificatori del ciclo di vita di SwiftUI: avviarla quando la vista appare e metterla in pausa quando scompare, per evitare che l'audio continui fuori dallo schermo.

VideoPlayer(player: player)
    .onAppear { player.play() }
    .onDisappear { player.pause() }

Contenuto in sovrapposizione

L'inizializzatore di VideoPlayer accetta una closure di sovrapposizione per inserire un'interfaccia personalizzata sopra il video, ad esempio titoli, badge e didascalie.

VideoPlayer(player: player) {
    VStack {
        Spacer()
        Text("Live")
            .padding(6)
            .background(.red, in: Capsule())
    }
}

Riproduzione in loop

Ripetere la riproduzione osservando la notifica di fine dell'elemento e tornando a zero con un posizionamento. Un AVPlayerLooper con un player in coda è un'altra opzione.

.onAppear {
    NotificationCenter.default.addObserver(
        forName: .AVPlayerItemDidPlayToEndTime,
        object: player.currentItem, queue: .main) { _ in
        player.seek(to: .zero); player.play()
    }
}

Sessione audio per i video

Configurare un AVAudioSession affinché l'audio del video si comporti correttamente, rispettando l'interruttore silenzioso o riproducendo l'audio anche quando è attivo, secondo necessità.

try? AVAudioSession.sharedInstance().setCategory(.playback)

Player personalizzati con UIViewRepresentable

Quando serve un'interfaccia completamente personalizzata, senza controlli di sistema, racchiudere un AVPlayerLayer in un UIViewRepresentable invece di utilizzare VideoPlayer.

struct PlayerLayerView: UIViewRepresentable {
    let player: AVPlayer
    func makeUIView(context: Context) -> UIView { PlayerUIView(player: player) }
    func updateUIView(_ uiView: UIView, context: Context) { }
}

La UIView di supporto

La UIView personalizzata ospita un AVPlayerLayer e lo ridimensiona in base ai propri limiti, offrendo una superficie video priva di controlli.

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() }
}

Picture in Picture

Per Picture in Picture, utilizzare AVPictureInPictureController con il livello del player e abilitare la funzionalità audio in background.

let pip = AVPictureInPictureController(playerLayer: playerLayer)
pip?.startPictureInPicture()

Pulizia

Metta in pausa il player e rimuova gli observer quando la view scompare, per liberare risorse e interrompere l'audio in background che non desidera mantenere.

.onDisappear {
    player.pause()
    // remove notification observers here
}

Verifica rapida: player SwiftUI

Verifichi di aver compreso come integrare i player in SwiftUI.

Riepilogo: integrazione dei player in SwiftUI

Il VideoPlayer di AVKit integra un AVPlayer con controlli standard; mantenga il player in @State per avere un'istanza stabile e gestisca la riproduzione e la pausa da onAppear/onDisappear. Aggiunga overlay tramite la trailing closure e ripeta la riproduzione alla notifica di fine.

Per una riproduzione personalizzata senza controlli, racchiuda un AVPlayerLayer in una UIViewRepresentable e rimuova gli observer quando la view scompare.

Gratis per iniziare

Impara Swift con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
122
Lezioni
409

Domande Frequenti

La lezione «Integrazione dei player in SwiftUI» è gratuita?

Sì — il testo completo di «Integrazione dei player in SwiftUI» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Integrazione dei player in SwiftUI»?

Usi VideoPlayer e view player personalizzate. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Integrazione dei player in SwiftUI»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Riproduzione multimediale con AVPlayer
  2. Registrazione audio
  3. AVAsset e composizione
  4. Integrazione dei player in SwiftUI
← Torna a Swift Academy