#ios #swift #avplayerlayer
#iOS #swift #avplayerlayer
Вопрос:
Я пытаюсь отобразить видео с помощью этого кода:
self.videoPlayer = AVPlayer.init(url: videoUrl as URL)
let playerLayer = AVPlayerLayer.init(player: self.videoPlayer)
self.videoPlayerView.layer.addSublayer(playerLayer)
playerLayer.frame = self.videoPlayerView.layer.bounds
self.videoPlayer.play()
но он не отображается внутри UIView (т. Е. self.videoPlayerView). Она просто показывает тонкую прямую линию в середине экрана, как показано на скриншоте. Как мне это исправить?
снимок экрана
Ответ №1:
попробуйте это… установите рамку слоя равной рамке вида
self.videoPlayer = AVPlayer.init(url: videoUrl as URL)
let playerLayer = AVPlayerLayer.init(player: self.videoPlayer)
self.videoPlayerView.layer.addSublayer(playerLayer)
playerLayer.frame = self.videoPlayerView.frame
self.videoPlayer.play()
Ответ №2:
Во-первых, код написан на Swift, а не на Objective-C, я бы изменил этот тег! Во-вторых, как вы определяете фрейм videoPlayerView? В-третьих, вы меняете рамку playerLayer после того, как она уже была добавлена. Таким образом, рамка визуально не изменится! Установите рамку, прежде чем добавлять ее в качестве подслоя. Надеюсь, это поможет.
Комментарии:
1. Я сделал это, но не исправил
2. Вы изменили место установки рамки playerLayer? Если да, то мой второй момент остается в силе, где и как вы устанавливаете фрейм videoPlayerViews?
3. В раскадровке с использованием автозапуска
4. Каким методом вы выполняете вызовы?
5. Хорошо, я нашел способ обойти это, используя пример, приведенный в документации Apple к AVPlayerLayer Удобный способ использования AVPlayerLayer в iOS или tvOS — в качестве слоя поддержки для UIView