在 Swift 中导航“返回”时 AVPlayer 视频消失

问题描述

导航到子视图时,我已将其设置为自动播放视频。在视频的底部,有一组指向相关内容的链接。当点击其中一个时,一个新的视图被推入堆栈,另一个视频开始播放。

当使用自动生成的“

我已尝试更新 CGRect 框架,使用 onAppear 重新初始化视频播放器,并且还遵循了建议 here

到目前为止似乎没有任何效果。这是我用于实际视频播放器的代码(改编自 Chris Mash 的网站):

import SwiftUI
import AVKit
import UIKit
import AVFoundation

let playerLayer = AVPlayerLayer()
class PlayVideo: UIView {

    init(frame: CGRect,url: URL) {
        super.init(frame: frame)
        
        // Create the video player using the URL passed in.
        let player = AVPlayer(url: url)
        player.volume = 100 // Will play audio if you don't set to zero
        player.play() // Set to play once created
        
        // Add the player to our Player Layer
        playerLayer.player = player
        playerLayer.videoGravity = .resizeAspectFill // Resizes content to fill whole video layer.
        playerLayer.backgroundColor = UIColor.black.cgColor
        
        layer.addSublayer(playerLayer)
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        playerLayer.frame = bounds
    }
   
    static func pauseVideo() {
        playerLayer.player?.pause()
    }
}


struct ViewVideo: UIViewRepresentable {
    
    var videoURL:URL
    var previewLength:Double?
    
    func makeUIView(context: Context) -> UIView {
        return PlayVideo(frame: .zero,url: videoURL)
    }
    
    func updateUIView(_ uiView: UIView,context: Context) {
        
    }
}

这是从主视图调用的: ViewVideo(videoURL: videoURL)

我能想到的唯一解决方法是禁用后退按钮并强制用户每次都返回主视图。这是一个糟糕的选择,我希望有人能在这里提供一些有用的建议。谢谢-

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)