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

iOS 10状态栏无法隐藏,已尝试多种方案仍未解决,求其他方法

解决iOS 10状态栏无法隐藏的额外方案

我太懂这种试遍常规方法还是卡壳的感觉了!针对你遇到的iOS 10状态栏隐藏问题,除了你已经尝试的那些操作,这里还有几个值得一试的思路:

  • 检查导航控制器的层级影响
    如果你的目标视图控制器是嵌套在UINavigationController中的,单独给子控制器重写prefersStatusBarHidden可能不会生效——因为导航控制器会接管状态栏的设置。你可以给UINavigationController添加一个分类,让它继承顶层视图控制器的状态栏偏好:

    @implementation UINavigationController (StatusBarCustom)
    - (BOOL)prefersStatusBarHidden {
        return self.topViewController.prefersStatusBarHidden;
    }
    @end
    

    之后在你的目标VC里保持- (BOOL)prefersStatusBarHidden { return YES; }的实现即可。

  • 验证Info.plist的键值准确性
    有时候看似正确的设置可能因为键名拼写错误或者位置不对失效:

    • 确保View controller-based status bar appearance是布尔值NO,Status bar is initially hidden是布尔值YES
    • 确认这些键是在主应用的Info.plist中设置,而不是某个target扩展的plist文件
  • 修复启动屏的状态栏状态
    如果启动屏(LaunchScreen.storyboard或LaunchImage)中状态栏没有隐藏,可能会导致系统后续的状态栏状态异常。你可以:

    • 在LaunchScreen的视图控制器中重写prefersStatusBarHidden返回YES
    • 或者直接在启动屏的界面编辑器中隐藏状态栏
  • 调整代码调用的时机
    确保调用setStatusBarHidden:的时机是在视图完全显示之后,比如viewDidAppear:方法中,而不是viewDidLoad(此时视图还未渲染完成):

    - (void)viewDidAppear:(BOOL)animated {
        [super viewDidAppear:animated];
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
    }
    

    别忘了前提是View controller-based status bar appearance必须设置为NO,否则这个代码调用会被系统忽略。

  • 排查第三方库的干扰
    有些第三方SDK(比如广告、统计或UI框架)可能会强制修改状态栏的显示状态。你可以尝试临时移除这些库,测试是否能正常隐藏状态栏,以此排查是否存在冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:22:18