包含AVQueuePlayer

时间:2019-05-30 09:46:34

标签: ios swift uitableview uigraphicscontext

我有一个UITableView个单元的供稿,其中一些包含图像,另一些包含AVQueuePlayer个正在播放mp4个视频。

我添加了一个UILongPressGestureRecognizer,并触发了此操作,我正在将单元格的快照作为UIImage并在显示的视图中向用户显示。

这基本上是一项审核功能,向您显示供稿项目以及有关下一步操作的一些选项。

这是完美的工作,但是,当我对包含AVQueuePlayer的单元进行快照时,该单元实际上是播放器所在的黑色。 这是一个没有图像或电影且正确渲染的单元格

单元格的尺寸是正确的,只是单元格播放器应该位于的空白处。

我正在使用以下扩展程序对该单元进行快照

extension UITableView
{
    func snapshotRows(at indexPaths: Set<IndexPath>) -> UIImage?
    {
        guard !indexPaths.isEmpty else { return nil }
        var rect = self.rectForRow(at: indexPaths.first!)
        for indexPath in indexPaths
        {
            let cellRect = self.rectForRow(at: indexPath)
            rect = rect.union(cellRect)
        }

        UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
        guard let context = UIGraphicsGetCurrentContext() else { return nil }
        for indexPath in indexPaths
        {
            let cell = self.cellForRow(at: indexPath)
            cell?.layer.bounds.origin.y = self.rectForRow(at: indexPath).origin.y - rect.minY
            cell?.layer.render(in: context)
            cell?.layer.bounds.origin.y = 0
        }

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
}

然后我可以使用 let image = tableView?.snapshotRows(at: Set([indexPath]))

我不希望在单元格中放电影,但是在拍摄快照时可能是静止的电影

0 个答案:

没有答案