【问题标题】:Status Bar still appearing in iOS 7 despite correct PList settings尽管 PList 设置正确,但状态栏仍出现在 iOS 7 中
【发布时间】:2013-09-30 22:18:09
【问题描述】:

我刚刚升级到 XCode 5 和 iOS 7。我已经阅读了我能找到的所有建议,但状态栏仍然出现在我的应用顶部。

我尝试在我的 plist 中将基于视图控制器的状态栏外观设置为 NO:

我已经尝试添加:

- (void)viewDidLoad
{
    // …
    if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
        // iOS 7
        [self prefersStatusBarHidden];
        [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
    } else {
        // iOS 6
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
    }
    // …
}

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

到我的根视图控制器。

我不知道还能尝试什么。我错过了什么明显的东西吗?

更新

我发现状态栏只出现在几个目标上,而运行相同代码的其他目标没有状态栏。我检查了他们所有的 plist... 与显示状态栏的唯一区别是它们在屏幕顶部显示一个广告栏... 我想知道这是否与它有关?

【问题讨论】:

  • 我认为在 XIB .status 栏中设置默认位置或无。试试吧
  • 它已经设置为无。将其设置为默认值没有效果...
  • 检查它不能在 ios7/xcode 5 openfl.org/developer/forums/general-discussion/… 中隐藏状态栏但检查这个链接也试试stackoverflow.com/questions/17763719/status-bar-wont-disappear
  • 我已经尝试过该帖子中的解决方案,如问题中所述
  • 你的plist设置是正确的,只要把这行[[UIApplication sharedApplication] setStatusBarHidden:YES];放在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法里AppDelegate.m就行了。

标签: iphone ios objective-c xcode statusbar


【解决方案1】:

在所有视图控制器中使用- (BOOL)prefersStatusBarHidden { return YES; }。祝你好运!

【讨论】:

  • 在所有视图控制器中?!这肯定不是解决方案吗?我有很多,而且它似乎对根目录没有任何影响,那么为什么在整个过程中都有返回调用会有所帮助?
  • 我不知道在你的情况下,在我的情况下,它正在解决问题。或者,您可以继承 UIViewController,并实现 prefersStatusBarHidden,并使该类成为您所有视图控制器的超级类。
  • 顺便问一下,你的应用真正的根视图控制器是什么?是导航控制器还是标签栏控制器?
  • 它是一个导航控制器...我不应该继承 UIVC。不过还是谢谢。
  • 那么,如果是导航控制器,你还认为你把prefersStatusBarHidden放在了正确的位置吗?试试我建议的方法,应该可以解决问题。或者,还有另一种方法,将UINavigationController 子类化并在该类中实现prefersStatusBarHidden,然后使用它。祝你好运!
【解决方案2】:

在应用程序 .plist 中添加此键: UIViewControllerBasedStatusBarAppearance 并将其设置为“否”

【讨论】:

    【解决方案3】:

    我最终删除了 plist 文件并从另一个有效的目标复制了一个,然后更改了必要的值。列表是相同的,但这似乎解决了它。我已经尝试过干净的构建,重置模拟器等,所以我猜这是 plist/xcode 中的错误。

    【讨论】:

      【解决方案4】:

      尝试在根视图控制器中添加下一个代码:

      - (BOOL)prefersStatusBarHidden { return YES; }
      

      【讨论】:

        【解决方案5】:

        不那么老套的解决方案是插入

        [application setStatusBarHidden:YES]
        

        在 AppDelegate.m 方法中

        - (BOOL) application(UIApplication *)application didFinishLaunchingWithOptions:(NSDirectory *)launchOptions

        喜欢 Dipen Panchasara 他的:[UIApplication sharedApplication] 提供方法调用中给出的应用程序。

        因为改变一个方法总是返回YES感觉不对

        【讨论】:

        • 不幸的是,这种方法在 iOS 9.0 之后被弃用了。弃用通知建议改用 UIViewController prefersStatusBarHidden
        猜你喜欢
        • 2014-10-31
        • 2014-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-24
        相关资源
        最近更新 更多