Swift Academy · Aula

Incorporação de Reprodutores no SwiftUI

Use VideoPlayer e views de reprodutor personalizadas.

Aula 4 de 413 etapas

Incorporação de Reprodutores no SwiftUI é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

Vídeo em SwiftUI

SwiftUI fornece a visualização VideoPlayer (de AVKit) para incorporar a reprodução de mídia de forma declarativa, com controles integrados.

import SwiftUI
import AVKit

A visualização VideoPlayer

VideoPlayer recebe um AVPlayer e o renderiza com controles de reprodução padrão — reproduzir, pausar, barra de busca e tela cheia.

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

Mantendo o reprodutor no estado

Armazene o AVPlayer em @State para que ele sobreviva às atualizações da visualização. Recriá-lo a cada chamada de body reiniciaria a reprodução.

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

Controlando a reprodução

Controle a reprodução pelos modificadores do ciclo de vida do SwiftUI: inicie quando a visualização aparecer e pause quando ela desaparecer, para evitar que o áudio continue fora da tela.

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

Sobrepondo conteúdo

O inicializador de VideoPlayer aceita um fechamento de sobreposição para uma interface personalizada sobre o vídeo — títulos, distintivos e legendas.

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

Reprodução em loop

Faça um loop observando a notificação de fim do item e buscando novamente a posição zero. Outra opção é usar AVPlayerLooper com um reprodutor de fila.

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

Sessão de áudio para vídeo

Configure uma AVAudioSession para que o áudio do vídeo se comporte corretamente — respeitando o botão de silêncio ou reproduzindo mesmo com ele ativado, conforme desejado.

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

Reprodutores personalizados com UIViewRepresentable

Quando você precisa de uma interface totalmente personalizada (sem controles do sistema), envolva um AVPlayerLayer em um UIViewRepresentable em vez de usar VideoPlayer.

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

A UIView subjacente

A UIView personalizada hospeda um AVPlayerLayer e redimensiona-o para seus limites, fornecendo uma superfície de vídeo sem controles.

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

Para usar Picture in Picture, utilize AVPictureInPictureController com a camada do reprodutor e ative o recurso de áudio em segundo plano.

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

Limpeza

Pause o reprodutor e remova os observadores quando a visualização desaparecer para liberar recursos e interromper o áudio em segundo plano que não pretendia reproduzir.

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

Verificação rápida: reprodutores SwiftUI

Teste sua compreensão sobre como incorporar reprodutores no SwiftUI.

Recapitulação: incorporando reprodutores no SwiftUI

O AVKit incorpora um AVPlayer com controles padrão; mantenha o reprodutor em @State para ter uma instância estável e controle a reprodução e a pausa a partir de onAppear/onDisappear. Adicione sobreposições por meio da closure final e faça a reprodução repetir ao receber a notificação de término.

Para uma reprodução personalizada e sem controles, envolva um AVPlayerLayer em um UIViewRepresentable e limpe os observadores quando a visualização desaparecer.

Grátis para começar

Aprenda Swift com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
122
Aulas
409

Perguntas Frequentes

A aula “Incorporação de Reprodutores no SwiftUI” é grátis?

Sim — o texto completo de “Incorporação de Reprodutores no SwiftUI” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Incorporação de Reprodutores no SwiftUI”?

Use VideoPlayer e views de reprodutor personalizadas. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Incorporação de Reprodutores no SwiftUI”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Reprodução de Mídia com AVPlayer
  2. Gravação de Áudio
  3. AVAsset e Composição
  4. Incorporação de Reprodutores no SwiftUI
← Voltar para Swift Academy