我正在尝试使用URL播放视频,但是由于某种原因,仅声音正在播放,并且没有视频的迹象。我已经在网上搜索了一段时间,但我已经意识到问题很可能是在函数updateUIView
和updatePlayer
中,但是我仍然无法解决。
这是我的代码:
struct HeaderCell: View {
var post: Post
@State var url: URL?
var body: some View {
VStack (alignment: .center){
PlayerContainerView(player: AVPlayer(url: url ?? URL(string:post.mediaUrl)!))
}
}
}
struct PlayerView: UIViewRepresentable {
let player: AVPlayer
func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<PlayerView>) {
(uiView as? PlayerUIView)?.updatePlayer(player: player)
}
func makeUIView(context: Context) -> UIView {
return PlayerUIView(player: player)
}
}
class PlayerUIView: UIView {
private let playerLayer = AVPlayerLayer()
init(player: AVPlayer) {
super.init(frame: .zero)
playerLayer.player = player
layer.addSublayer(playerLayer)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
playerLayer.frame = bounds
}
func updatePlayer(player: AVPlayer) {
self.playerLayer.player = player
}
}