选择新的 UITableViewCell 时停止 AVPlayer 视频
Stop AVPlayer video when a new UITableViewCell is selected
我想根据我的表格视图中的 selected 单元格显示视频。我想在 vc.
的视图中显示视频
以下代码在点击单元格时显示正确的视频,但每当我 select 一个新单元格时,旧视频中的音频仍然存在。我怎样才能删除它?
在我的 vc 中设置视图:
func setupView(for url: URL) {
let player = AVPlayer(url: url)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.videoView.bounds
self.videoView.layer.addSublayer(playerLayer)
player.play()
}
didSelectRow 代码:
let selectedExercise = exercises[indexPath.row]
setupView(for: URL(string: selectedExercise.videoUrl)!)
我猜我应该先 pause/stop 上一个视频再放新视频。但我不知道该怎么做。
非常感谢!
这是因为您每次点击都会创建新的 AVPlayer 实例。
要解决您的问题,您需要搬家
let player = AVPlayer(url: url)
在 setupView()
之外并且只调用一次。例如,您可以将其移动到 init()
。
要更新 setupView()
中的资产(视频 url),您可以使用
player.replaceCurrentItem(with: AVPlayerItem(url: url))
.
我想根据我的表格视图中的 selected 单元格显示视频。我想在 vc.
的视图中显示视频以下代码在点击单元格时显示正确的视频,但每当我 select 一个新单元格时,旧视频中的音频仍然存在。我怎样才能删除它?
在我的 vc 中设置视图:
func setupView(for url: URL) {
let player = AVPlayer(url: url)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.videoView.bounds
self.videoView.layer.addSublayer(playerLayer)
player.play()
}
didSelectRow 代码:
let selectedExercise = exercises[indexPath.row]
setupView(for: URL(string: selectedExercise.videoUrl)!)
我猜我应该先 pause/stop 上一个视频再放新视频。但我不知道该怎么做。 非常感谢!
这是因为您每次点击都会创建新的 AVPlayer 实例。
要解决您的问题,您需要搬家
let player = AVPlayer(url: url)
在 setupView()
之外并且只调用一次。例如,您可以将其移动到 init()
。
要更新 setupView()
中的资产(视频 url),您可以使用
player.replaceCurrentItem(with: AVPlayerItem(url: url))
.