SwiftUI에 플레이어 삽입하기
VideoPlayer와 사용자 지정 플레이어 뷰를 사용합니다.
SwiftUI에 플레이어 삽입하기은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
SwiftUI에서 비디오 사용하기
SwiftUI는 AVKit에서 제공하는 VideoPlayer 뷰를 통해 미디어 재생을 선언적으로 삽입할 수 있으며, 기본 컨트롤도 제공합니다.
import SwiftUI
import AVKitVideoPlayer 뷰
VideoPlayer는 AVPlayer를 받아 표준 재생 컨트롤인 재생, 일시 정지, 탐색 막대, 전체 화면을 표시합니다.
struct PlayerScreen: View {
let player = AVPlayer(url: URL(string: "https://example.com/v.mp4")!)
var body: some View {
VideoPlayer(player: player)
.frame(height: 240)
}
}상태로 플레이어 유지하기
AVPlayer를 @State에 저장하면 뷰 업데이트가 발생해도 유지됩니다. 매번 body가 호출될 때 이를 다시 만들면 재생이 다시 시작됩니다.
struct PlayerScreen: View {
@State private var player = AVPlayer(
url: URL(string: "https://example.com/v.mp4")!)
var body: some View {
VideoPlayer(player: player)
}
}재생 제어
SwiftUI의 생명 주기 수식어로 재생을 제어합니다. 화면에 나타날 때 시작하고 사라질 때 일시 정지하면 화면 밖에서 오디오가 계속 재생되는 것을 방지할 수 있습니다.
VideoPlayer(player: player)
.onAppear { player.play() }
.onDisappear { player.pause() }오버레이 콘텐츠
VideoPlayer 초기화 구문은 비디오 위에 제목, 배지, 자막과 같은 사용자 지정 UI를 레이어로 표시할 수 있는 오버레이 클로저를 받습니다.
VideoPlayer(player: player) {
VStack {
Spacer()
Text("Live")
.padding(6)
.background(.red, in: Capsule())
}
}반복 재생
항목 종료 알림을 관찰하고 재생 위치를 0으로 되돌리면 반복 재생할 수 있습니다. 큐 플레이어와 함께 AVPlayerLooper를 사용하는 방법도 있습니다.
.onAppear {
NotificationCenter.default.addObserver(
forName: .AVPlayerItemDidPlayToEndTime,
object: player.currentItem, queue: .main) { _ in
player.seek(to: .zero); player.play()
}
}비디오를 위한 오디오 세션
AVAudioSession을 구성하면 비디오 오디오가 올바르게 동작하도록 할 수 있습니다. 음소거 스위치를 따르게 하거나 원하는 경우 음소거 상태에서도 재생하도록 설정할 수 있습니다.
try? AVAudioSession.sharedInstance().setCategory(.playback)UIViewRepresentable을 사용한 사용자 지정 플레이어
시스템 컨트롤 없이 완전히 사용자 지정한 UI가 필요하다면 VideoPlayer 대신 AVPlayerLayer를 UIViewRepresentable로 감쌉니다.
struct PlayerLayerView: UIViewRepresentable {
let player: AVPlayer
func makeUIView(context: Context) -> UIView { PlayerUIView(player: player) }
func updateUIView(_ uiView: UIView, context: Context) { }
}기반 UIView
사용자 지정 UIView가 AVPlayerLayer를 호스팅하고 자신의 경계에 맞게 크기를 조절하므로 컨트롤이 없는 비디오 표면을 만들 수 있습니다.
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() }
}화면 속 화면
화면 속 화면 기능에는 플레이어 레이어와 함께 AVPictureInPictureController를 사용하고 백그라운드 오디오 기능을 활성화합니다.
let pip = AVPictureInPictureController(playerLayer: playerLayer)
pip?.startPictureInPicture()정리하기
뷰가 사라질 때 플레이어를 일시 정지하고 관찰자를 제거하여 리소스를 해제하고, 의도하지 않은 백그라운드 오디오가 재생되지 않도록 하세요.
.onDisappear {
player.pause()
// remove notification observers here
}빠른 확인: SwiftUI 재생기
SwiftUI에 재생기를 삽입하는 방법을 얼마나 이해했는지 확인해 보세요.
복습: SwiftUI에 재생기 삽입하기
AVKit의 VideoPlayer는 표준 제어 기능이 포함된 AVPlayer를 삽입합니다. 안정적인 인스턴스를 유지하려면 재생기를 @State에 보관하고 onAppear/onDisappear에서 재생과 일시 정지를 제어하세요. 후행 클로저를 통해 오버레이를 추가하고 종료 알림이 오면 반복 재생하세요.
사용자 지정 제어 기능 없이 재생하려면 AVPlayerLayer를 UIViewRepresentable로 감싸고, 뷰가 사라질 때 관찰자를 정리하세요.
AI 튜터와 함께 Swift을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 122
- 레슨
- 409
자주 묻는 질문
“SwiftUI에 플레이어 삽입하기” 강의는 무료인가요?
네 — “SwiftUI에 플레이어 삽입하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“SwiftUI에 플레이어 삽입하기”에서 뭘 배우나요?
VideoPlayer와 사용자 지정 플레이어 뷰를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Swift Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“SwiftUI에 플레이어 삽입하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- AVPlayer로 미디어 재생하기
- 오디오 녹음
- AVAsset과 Composition
- SwiftUI에 플레이어 삽입하기