Снимок UITableViewCell, содержащий AVQueuePlayer - PullRequest
0 голосов
/ 30 мая 2019

У меня есть фид 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]))

Я не ожидаю фильма в ячейке, но, возможно, неподвижного фильма во времяснимок сделан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...