【发布时间】:2021-09-02 10:25:47
【问题描述】:
所以我创建了一个名为“VideoElement”的视图,它会在父视图加载时在后台播放视频。它运作良好。但是,我无法弄清楚如何实现暂停/恢复系统。我想更改一个变量(var“paused”),它会在 true 时暂停视频,在 false 时继续播放。它有点工作。具体来说,当“暂停”为真时,视频会暂停。但是,当它变为 false 时,视频不会继续播放。
也许它可能与“updateUIViewController”有关?另外,我不知道为什么“暂停”必须是绑定变量而不是状态变量(@State 不起作用)。任何帮助将不胜感激。谢谢!
import SwiftUI
import AVKit
struct VideoElement: View {
var fileName: String
@Binding var paused: Bool //this controls playback
var body: some View {
let player = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forAuxiliaryExecutable: fileName)!))
AVPlayerControllerRepresented(player: player)
.onAppear {
player.play()
}
.onChange(of: paused, perform: { paused in
if paused {
player.pause()
}
else {
player.play() //should play the video, does not
print("resume") //this runs, so above should've run also
}
})
}
}
}
struct AVPlayerControllerRepresented : UIViewControllerRepresentable {
var player : AVPlayer
func makeUIViewController(context: Context) -> AVPlayerViewController {
let controller = AVPlayerViewController()
controller.player = player
controller.showsPlaybackControls = false
return controller
}
func updateUIViewController(_ uiViewController: AVPlayerViewController, context: Context) {
}
}
【问题讨论】:
标签: ios swiftui avplayer avplayerviewcontroller uiviewrepresentable