Incorporação de Reprodutores no SwiftUI
Use VideoPlayer e views de reprodutor personalizadas.
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 AVKitA 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.
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
- Reprodução de Mídia com AVPlayer
- Gravação de Áudio
- AVAsset e Composição
- Incorporação de Reprodutores no SwiftUI