AVPlayer 层不适合播放器视图
Posted
技术标签:
【中文标题】AVPlayer 层不适合播放器视图【英文标题】:AVPlayer layer is not fitting to the player view 【发布时间】:2019-07-14 11:14:27 【问题描述】:我已经实现了 AV 视频播放器视图,播放器层不适合更大屏幕的 iPhone,例如 6 - 8 plus 和 iPhone XS Max。
我的播放器视图是金色的,这意味着播放器视图的约束正在适应屏幕边缘,所以问题出在 AVPlayerLayer。
请检查我下面的代码,并根据我的代码库建议我使用工作代码 sn-ps。
func setupVideoBg()
// Load the video from the app bundle.
let videoURL: NSURL = Bundle.main.url(forResource: "video", withExtension: "mov")! as NSURL
player = AVPlayer(url: videoURL as URL)
player?.actionAtItemEnd = .none
player?.isMuted = true
let playerLayer = AVPlayerLayer(player: player)
// playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
playerLayer.videoGravity = AVLayerVideoGravity.resize
playerLayer.zPosition = -1
// playerLayer.frame = CGRect(x: 0, y: 0, width: self.videoView.frame.size.width, height: self.videoView.frame.size.height)
playerLayer.frame = videoView.layer.bounds
// playerLayer.frame = videoView.bounds
videoView.layer.addSublayer(playerLayer)
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
player?.play()
//loop video
NotificationCenter.default.addObserver(self,
selector: #selector
(self.loopVideo),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
object: nil)
@objc func loopVideo()
player?.seek(to: CMTime.zero)
player?.play()
【问题讨论】:
显示你的代码如何设置AVPlayerLayer
对不起,我忘了添加
@Sh_Khan 代码已添加,请查看
你在哪里打电话setupVideoBg
??
在 viewDidload() 中
【参考方案1】:
以下是您可能没有看到您如何设置 videoView.layer 的问题:
1 playerLayer.zPosition = -1
(您可能有理由更改您的 zPos,但是您可以简单地更改子图层的图层顺序)
2 playerLayer.frame = videoView.layer.bounds
(如果你的视图层错了,那么你就被坑了。你可以使用你的videoView.bounds.size.width的宽度并设置你的playerLayer.frame.size.width
【讨论】:
以上是关于AVPlayer 层不适合播放器视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在其他视图中使用 Swift 中的 AVPlayer 暂停和播放音乐