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

刘海屏iPhone重写prefersStatusBarHidden无法隐藏状态栏问题

全面屏刘海iPhone 无法隐藏状态栏问题解答

从iPhone X开始的所有带刘海/灵动岛的全面屏iPhone,均支持第三方App隐藏状态栏,重写prefersStatusBarHidden返回true仍不生效,是UIKit状态栏控制逻辑的配置问题,按以下优先级排查:

  • 容器控制器控制权问题
    如果当前ViewController嵌套在UINavigationController、UITabBarController等容器控制器中,系统默认优先读取容器本身的prefersStatusBarHidden属性,不会直接响应子VC的重写逻辑。
    解决方式:重写容器控制器的childForStatusBarHidden属性,将状态栏控制权返回给当前展示的子VC,以UINavigationController为例:
override var childForStatusBarHidden: UIViewController? {
    return topViewController
}

如果是模态present弹出的页面,需要在当前VC的viewDidLoad中添加如下代码,声明由当前VC接管状态栏样式:

modalPresentationCapturesStatusBarAppearance = true
  • Info.plist 配置校验
    找到配置项View controller-based status bar appearance(对应键值UIViewControllerBasedStatusBarAppearance),确保值设置为YES。如果该值为NO,系统会完全忽略VC级别的状态栏配置,仅读取UIApplication的全局状态栏设置(该全局API在iOS 13之后已被废弃,不建议使用)。

  • 主动触发状态栏刷新
    完成上述配置后,如果状态栏没有自动更新,可以在需要切换状态栏显隐的位置调用如下方法,强制系统刷新状态栏状态:

setNeedsStatusBarAppearanceUpdate()

补充说明:iOS仅在主屏幕、锁屏等系统级场景强制显示状态栏,第三方App内只要配置正确,可随时根据业务场景隐藏状态栏,视频App全屏播放时的隐栏效果就是标准实现案例。

问题运行截图1
问题运行截图2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:15:44