У меня есть фид 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]))
Я не ожидаю фильма в ячейке, но, возможно, неподвижного фильма во времяснимок сделан