#ios #swift #uicollectionviewcell #avplayer #avplayerviewcontroller
#iOS #swift #uicollectionviewcell #avplayer #avplayerviewcontroller
Вопрос:
У меня есть AVPlayer
подкласс внутри UICollectionViewCell
. У меня есть кнопка, которая при нажатии на нее должна отображать то же самое видео в полноэкранном режиме. Что я думал, я мог бы сделать, так это представить UIViewController
и передать ему ссылку на AVPlayer
, чтобы он мог добавить ее в качестве подпросмотра и продолжить воспроизведение. Однако происходит то, что он добавляет его в качестве подпросмотра, видео приостанавливается, но воспроизведение звука продолжается. Почему? Как я могу это решить?
Комментарии:
1. ваша проблема решена? поскольку я также сталкиваюсь с такой же проблемой
2. @Van Да, я забыл отметить свой ответ как решенный, см. Ниже.
Ответ №1:
Оказывается, если вы передаете AVPlayer
другому контроллеру просмотра, вам нужно удалить исходную строгую ссылку на него. У вас может быть только одна ссылка на AVPlayer
, иначе она начинает зависать и становится странной.
Комментарии:
1. даже после удаления ссылки из ячейки происходит ее замораживание.. Я добавил проигрыватель в avplayerlayer в ячейку таблицы, и при переходе к контроллеру проигрывателя я устанавливаю cell.player = nil. Можете ли вы, пожалуйста, помочь мне в этом?
Ответ №2:
Для этого используйте AVPlayerController. Всякий раз, когда вы нажимаете на кнопку, просто предоставляйте AVPlayerController тот же экземпляр.
@IBAction func buttonTap(_ sender: Any) {
let vc = storyboard?.instantiateViewController(withIdentifier:"FullScreenPlayer") as! FullScreenPlayerViewController
vc.player = playerInCell
present(vc, animated: false)
}
Примечание: FullScreenPlayerController является подклассом AVPlayerViewController
Комментарии:
1. По сути, это то, что я уже сделал, но я хочу сказать, что при представлении этого vc видео зависает, а аудио продолжает воспроизводиться.
2. Возможно, что-то не так с вашим AVPlayerLayer. Не могли бы вы опубликовать код.