Swift Academy · Lektion

Player in SwiftUI einbetten

Verwenden Sie VideoPlayer und eigene Player-Views.

Lektion 4 von 413 Schritte

Player in SwiftUI einbetten ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Video in SwiftUI

SwiftUI stellt die View VideoPlayer aus AVKit bereit, um Medienwiedergabe deklarativ mit integrierten Steuerelementen einzubetten.

import SwiftUI
import AVKit

Die VideoPlayer-View

VideoPlayer nimmt einen AVPlayer entgegen und rendert ihn mit standardmäßigen Wiedergabesteuerelementen – Wiedergabe, Pause, Positionsregler und Vollbild.

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

Den Player im State halten

Speichern Sie den AVPlayer in @State, damit er View-Aktualisierungen übersteht. Wenn Sie ihn bei jedem Aufruf von body neu erstellen, würde die Wiedergabe neu beginnen.

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

Wiedergabe steuern

Steuern Sie die Wiedergabe über Modifier des SwiftUI-Lebenszyklus: Starten Sie sie beim Erscheinen und pausieren Sie sie beim Verschwinden, damit der Ton nicht außerhalb des Bildschirms weiterläuft.

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

Overlay-Inhalte

Der Initializer von VideoPlayer akzeptiert eine Overlay-Closure für benutzerdefinierte UI, die über dem Video liegt – etwa Titel, Abzeichen oder Untertitel.

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

Wiedergabe wiederholen

Wiederholen Sie die Wiedergabe, indem Sie die Benachrichtigung über das Ende des Elements beobachten und zur Position null springen. Eine weitere Möglichkeit ist AVPlayerLooper mit einem Queue-Player.

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

Audio-Session für Videos

Konfigurieren Sie eine AVAudioSession, damit sich der Ton des Videos korrekt verhält – entweder den Stummschalter respektiert oder ihn wie gewünscht übergeht.

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

Benutzerdefinierte Player mit UIViewRepresentable

Wenn Sie eine vollständig benutzerdefinierte UI ohne Systemsteuerelemente benötigen, binden Sie einen AVPlayerLayer in eine UIViewRepresentable ein, statt VideoPlayer zu verwenden.

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

Die zugrunde liegende UIView

Die benutzerdefinierte UIView enthält einen AVPlayerLayer und passt ihn an ihre Bounds an. So erhalten Sie eine Videooberfläche ohne Steuerelemente.

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

Bild-in-Bild

Für Bild-in-Bild verwenden Sie AVPictureInPictureController mit Ihrer Player-Ebene und aktivieren Sie die Hintergrundaudio-Funktion.

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

Aufräumen

Pausieren Sie den Player und entfernen Sie Beobachter, wenn die Ansicht verschwindet, um Ressourcen freizugeben und unbeabsichtigte Audiowiedergabe im Hintergrund zu beenden.

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

Kurztest: SwiftUI-Player

Testen Sie Ihr Verständnis für das Einbetten von Playern in SwiftUI.

Zusammenfassung: Player in SwiftUI einbetten

Der VideoPlayer von AVKit bettet einen AVPlayer mit Standardsteuerelementen ein. Bewahren Sie den Player in @State auf, damit die Instanz stabil bleibt, und steuern Sie die Wiedergabe und Pause über onAppear/onDisappear. Fügen Sie Overlays über die abschließende Closure hinzu und starten Sie die Wiedergabe über die Endbenachrichtigung erneut.

Für eine benutzerdefinierte Wiedergabe ohne Steuerelemente kapseln Sie eine AVPlayerLayer in einem UIViewRepresentable und räumen Beobachter beim Verschwinden der Ansicht auf.

Kostenlos starten

Lerne Swift mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
122
Lektionen
409

Häufig gestellte Fragen

Ist die Lektion „Player in SwiftUI einbetten“ kostenlos?

Ja — der vollständige Text von „Player in SwiftUI einbetten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Player in SwiftUI einbetten“?

Verwenden Sie VideoPlayer und eigene Player-Views. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Player in SwiftUI einbetten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Medien mit AVPlayer abspielen
  2. Audio aufnehmen
  3. AVAsset und Komposition
  4. Player in SwiftUI einbetten
← Zurück zu Swift Academy