如何隐藏/移除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
相关产品推荐
相关产品推荐

