如何在用户滚动时停止视频

时间:2017-10-03 16:16:37

标签: ios swift uitableview uiscrollview tableview

我有一个tableView,它从数据库中获取数据。我的TableView中的一些单元格中包含视频,当我们遇到视频时,它会正确显示。

我的问题是,如果有人继续滚动,那么该视频仍在继续播放。我想改变它,如果用户观看视频的一部分然后继续滚动,那么我想在那里结束视频。我想我已经接近解决这个问题,但还没有完全解决。

这是我的代码:

id_establecimiento

上面的代码只是检查func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Home", for: indexPath) as! Home let filename = streamsModel.video_image[indexPath.row] as NSString if filename.pathExtension == "mov" { let movieURL = URL(string: streamsModel.video_image[indexPath.row]) cell.videoCapHeight.constant = CGFloat(Float(cell.pic_height!)) cell.playerView = AVPlayer(url: movieURL!) cell.MyAVPlayer.player = cell.playerView cell.MyAVPlayer.showsPlaybackControls = false cell.MyAVPlayer.view.frame = cell.videoView.bounds cell.videoView.addSubview(cell.MyAVPlayer.view) controller.addChildViewController(cell.MyAVPlayer) cell.playerView?.isMuted = false cell.MyAVPlayer.player?.play() } return cell } 是否有.mov扩展名(JSON)。如果是,则获取电影/视频并将其显示在AVPlayer中。

从代码中可以看出,使用了streamsModel.video_image方法,因此视频会自动开始播放。问题是,如果一个视频是1分钟长,你观看它20秒,然后向下滚动,你仍然会听到视频播放,我想在用户滚动时立即停止视频。 / p>

这是我的scrollView代码现在我只需要在滚动或可能在UITableViewCell中停止视频:

Play()

1 个答案:

答案 0 :(得分:2)

Dan建议使用表格视图的委托方法,这对您来说效果很好,这意味着您可以在单元格离开屏幕时暂停视频。

这样的事情应该有效:

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    // Dequeue the cell
    let cell = tableView.dequeueReusableCell(withIdentifier: "Home", for: indexPath) as! Home
    // Check the player object is set (unwrap it)
    if let player = cell.MyAVPlayer.player {
        // Check if the player is playing
        if player.rate != 0 {
            // Pause the player
            player.pause()
        }
    }
}

我建议自动暂停和再次播放可能有点滞后,具体取决于是否有缓冲等...所以你可能想考虑允许用户在点击时播放视频。