Если пользователь отклоняет видео до его завершения, видео работает нормально в следующий раз. .onapear < /li>
Проверенная ссылка CDN доступна и не истекает < /li>
< /ul>
Код: Выделить всё
import SwiftUI
import AVKit
struct VideoSheet: View {
@State var videoURL: URL
@Environment(\.dismiss) var dismiss
@State private var player: AVPlayer?
var body: some View {
VStack(spacing: 0) {
Spacer()
HStack {
Spacer()
Button(action: {
dismiss()
}) {
Image("cancel")
.resizable()
.renderingMode(.template)
.foregroundStyle(Color("Heading"))
.frame(width: 20, height: 20)
}
.buttonStyle(.plain)
}
.padding([.top, .trailing], 8)
if let player = player {
MacVideoPlayer(player: player)
.cornerRadius(16)
.onAppear {
player.seek(to: .zero)
player.play()
}
.onDisappear {
player.pause()
player.seek(to: .zero)
}
} else {
ProgressView()
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
.frame(minWidth: 360, maxWidth: .infinity, minHeight: 640, maxHeight: .infinity)
.background(Color("Background"))
.onAppear {
player = AVPlayer(url: videoURL)
}
.onDisappear {
player?.pause()
player = nil
}
}
}
struct MacVideoPlayer: NSViewRepresentable {
let player: AVPlayer
func makeNSView(context: Context) -> AVPlayerView {
let view = AVPlayerView()
view.controlsStyle = .floating
view.player = player
return view
}
func updateNSView(_ nsView: AVPlayerView, context: Context) {
nsView.player = player
}
}
Как я могу гарантировать, что видео CDN правильно воспроизводите каждый раз, когда лист открывается, даже после того, как видео завершено один раз?>
Подробнее здесь: https://stackoverflow.com/questions/796 ... pening-the