You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何隐藏/移除AVPlayer/AVPlayerViewController中的最大化按钮

如何单独隐藏AVPlayerViewController的最大化按钮?

iOS 16及以上:使用官方API(推荐)

苹果在iOS 16中新增了customizablePlaybackControls属性,允许精确指定要显示的播放控件,只需排除全屏按钮即可:

let playerVC = AVPlayerViewController()
playerVC.player = yourAVPlayerInstance

if #available(iOS 16.0, *) {
    // 只保留需要的控件,不包含.fullscreen就不会显示最大化按钮
    playerVC.customizablePlaybackControls = [.playPause, .volume, .playbackRate, .timeElapsed, .timeRemaining]
}

iOS 15及以下:遍历子视图隐藏(非官方,需注意兼容性)

iOS 16之前没有官方支持,只能通过遍历AVPlayerViewController的私有子视图找到全屏按钮并隐藏。这种方法依赖系统视图结构,可能随iOS版本更新失效:

extension AVPlayerViewController {
    func hideFullscreenButton() {
        // 找到控件容器视图
        guard let controlsView = view.subviews.first(where: { 
            $0.className.contains("AVPlayerControlsView") 
        }) else { return }
        
        // 找到全屏按钮并隐藏
        let fullscreenButton = controlsView.subviews.first(where: { 
            $0.className.contains("FullscreenButton") 
        })
        fullscreenButton?.isHidden = true
    }
}

// 在playerVC视图加载完成后调用
playerVC.viewDidAppear {
    playerVC.hideFullscreenButton()
}

注意事项

  • 私有视图遍历的方法存在兼容性风险,若iOS系统更新调整了控件结构,该方法可能失效,建议优先适配iOS 16+使用官方API。
  • 若需要更高的自定义自由度,也可以考虑直接使用AVPlayerLayer自定义播放界面,完全控制所有控件的显示。

内容的提问来源于stack exchange,提问作者harsha Bheemreddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:10:01