我有一个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]))
我不希望在单元格中放电影,但是在拍摄快照时可能是静止的电影