ZFPlayer iOS16 系统横屏全屏问题处理

iOS16 以后 通过原始横屏的方法已经不好使了,需要在此基础上添加 setNeedsUpdateOfSupportedInterfaceOrientations 方法的调用,具体API 描述如下:

回到主题,在使用ZFPlayer 视频库全屏播放时iOS16系统下的处理参考如下:

//进入全屏播放事件
self.player.orientationWillChange = {[weak self] (player,isFullScreen) in
            guard let self = self else { return }
            
            if isFullScreen {
                var _title = self.model?.title ?? ""
                if self.model?.authorize == 0 {
                    _title += "(试看\(Int(Setting.shareInstance.K_APP_TRY_WATCH_INTERVAL/60))分钟)".replacingOccurrences(of: "\r", with: "")
                }
                
                if self.isVertical {
                    self.controlView.portraitControlView.showTitle(_title, fullScreenMode: .portrait)
                }
                else{
                    self.isAutorotate = true
                    self.faceOrientation = .landscapeRight
                   
                    if #available(iOS 16.0, *) {
                        //横屏
                        self.setNeedsUpdateOfSupportedInterfaceOrientations()

                        self.player.addPlayerView(toContainerView: UIApplication.shared.windows.first!)
                        
                    } else {
                        // Fallback on earlier versions
                        self.player.containerView = UIApplication.shared.windows.first!
                    }
                    self.controlView.landScapeControlView.showTitle(_title, fullScreenMode: .landscape)
                }
            }
}


//MARK: - 设备方向处理
extension StudyCourseDetailsViewController {
    
    override var shouldAutorotate: Bool {
        get {
            return self.isAutorotate
        }
    }
    
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        get {
            return self.faceOrientation
        }
    }
    
}

退出全屏的方法,无需调整,具体参考如下:

//退出全屏被点击(全屏返回按钮被点击)
self.playerControlView.backBtnClickCallback = {[weak self] in
            guard let self = self else { return }
            
            if self.isVertical == false {
                self.isAutorotate = false
                self.faceOrientation = .portrait
                
                self.player.rotate(to: .portrait, animated: true) {
                    print("已返回小屏")
                }
                
                self.player.containerView = self.videoPlayerView
            }
            
      self.player.enterFullScreen(false, animated: true)
}

更多关于iOS16 兼容性处理,参考:XCode14 & iOS16 适配问题汇总 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追夢秋陽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值