我正在我的 UITableViewCell 中加载一个 AVPlayerViewController,它运行良好,但我正在尝试在单元格可见时播放视频,在单元格不可见时暂停视频。
问题是视频以编程方式加载到单元格中,当单元格消失并重新出现时,这会再次加载视频,因此它总是从头开始。例如:如果我按下播放视频并在 10 秒内暂停,然后滚动以使视频单元格不可见,在我返回视频单元格后,它会再次加载并在 0 秒后提供视频。
我使用函数 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
使用以下代码在我的单元格中加载视频:
let videoURL = NSURL(string: "url_video")
let player = AVPlayer(URL: videoURL!)
cell.av.player = player
cell.av.view.frame = cell.bounds
self.addChildViewController(cell.av)
cell.contentView.addSubview(cell.av.view)
cell.av.didMoveToParentViewController(self)
cell.av.view.translatesAutoresizingMaskIntoConstraints = false
我需要视频保持暂停状态,我该怎么做?
最佳答案
问题是,每当 tableViewCell 离开 View 并返回时,它就会被重新创建。您将不得不想出一种方法来保存用户在每个视频中的位置。
创建一个包含一串 0 的数组,每个 0 对应于每个单元格中视频的时间。
var times = [0,0,0,0...]
现在假设我在第二个单元格上并开始播放我的视频。视频播放了 10 秒,然后我暂停了它。您可以通过以下方式获取我的持续时间:
AVPlayerItem *currentItem = yourAVPlayer.currentItem.currentTime
现在,我滚动浏览单元格,然后返回到它。在您的 CellForRowAtIndexPath 函数中,确保使用数组中的任何值初始化每个视频 - times
您可以通过此链接的帮助以特定时间初始化 AVPlayer 视频:Seek to a certain position in AVPlayer right after the asset was loaded
差不多就是这些了。</p>
关于swift - 当视频出现在可见单元格中时,它会在 UITableViewCell 中重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38446850/