AVPlayer仅在SwiftUI中播放声音而不是视频

时间:2020-10-08 00:03:02

标签: ios swift xcode swiftui avplayer

我正在尝试使用URL播放视频,但是由于某种原因,仅声音正在播放,并且没有视频的迹象。我已经在网上搜索了一段时间,但我已经意识到问题很可能是在函数updateUIViewupdatePlayer中,但是我仍然无法解决。 这是我的代码:

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
    }
}

0 个答案:

没有答案