首页 文章

无法隐藏iOS7中的状态栏

提问于
浏览
267

我刚刚将iPhone 5 iOS 7升级到四个测试版 . 现在当我在这款iPhone上从Xcode 5运行我的应用程序时,状态栏不会隐藏,即使它应该 .

不工作:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

不工作:

[UIApplication sharedApplication].statusBarHidden = YES;

无法登录Apple Developer论坛

25 回答

  • 556

    在您的应用程序plist文件中添加一行称为“查看基于控制器的状态栏外观”并将其设置为NO

    请注意,如果您在应用程序中使用UIImagePickerController,这根本不起作用 .

    来自http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/,mgiroux的解决方案

    An example adding View Base Controller to your Info settings in Xcode

  • 15

    在视图控制器中添加方法 .

    - (BOOL)prefersStatusBarHidden {
        return YES;
    }
    
  • 3

    在Plist中添加以下属性 .

    • Status bar is initially hidden =是

    • View controller-based status bar appearance =没有

    添加两者 - 现在状态栏将消失 .

  • 1

    要在单个视图上隐藏状态栏,您应该使用:

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

    起初,这对我不起作用,然后在此方法的文档中看到://如果您的应用程序使用默认的基于UIViewController的状态栏系统,则设置statusBarHidden不会执行任何操作 .

    这必须在plist文件上完成,将密钥 View controller-based status bar appearance 设置为 NO . 然后它奏效了 .

  • -7

    要在iOS7中隐藏状态栏,您需要2行代码

    • inapplication: (UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    [application setStatusBarHidden:YES];
    

    在info.plist中

    • 添加此项
    View-Controller Based Status Bar Appearance = NO
    
  • 7

    要使用旧版UIApplication方法隐藏/显示状态栏,您的应用必须为iOS 7设置plist值:

    View-Controller Based Status Bar Appearance = NO

    默认情况下,此值设置为YES . 如果将其更改为NO,则可以使用旧方法 . 如果将其设置为YES,您仍然可以隐藏状态栏,但应由应用程序中的每个视图控制器子类覆盖: prefersStatusBarHidden 以返回YES .

    只要您的应用需要状态栏外观或可见性更改,并且基于视图控制器的状态栏外观设置为YES,您的最外层视图控制器需要调用:

    setNeedsStatusBarAppearanceUpdateAnimation

  • 3

    针对此问题提出了很多组合,但问题是iOS 6和7使用不同的方法来隐藏状态栏 . 我从未成功设置plist设置以在iOS 7上启用iOS6风格的行为,但如果您要构建应用程序以支持iOS 6,则需要一次使用3个方法以确保特定视图控制器隐藏状态栏:

    // for ios 7 
    - (BOOL)prefersStatusBarHidden{
        return YES;
    }
    
    // for ios 6
    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }
    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        // explicitly set the bar to show or it will remain hidden for other view controllers
        [[UIApplication sharedApplication] setStatusBarHidden:NO];
    }
    

    无论您的plist设置如何,这都应该有效 .

  • 3

    我必须在下面进行两项更改才能隐藏状态栏:

    将此代码添加到要隐藏状态栏的视图控制器中:

    - (BOOL)prefersStatusBarHidden
    {
        return YES;
    }
    

    将其添加到.plist文件中(转到应用程序设置中的“信息”)

    View controller-based status bar appearance --- NO
    

    然后你可以调用这一行来隐藏状态栏:

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    
  • 16

    只需在info.plist文件中添加这两行 . 它将修复iOS7和旧版本 .

    • 状态栏最初隐藏= YES

    • 查看基于控制器的状态栏外观= NO

    导航到项目并选择Targets - > General,然后查看“状态栏样式...在应用程序启动期间隐藏”复选框 . 这会奏效 .

  • 4

    试试这个简单的方法:

    - (void)viewWillAppear:(BOOL)animated
    {
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
    }
    
  • 2

    唯一对我有用的是在你的plist中添加以下内容

    <key>UIStatusBarHidden</key>
    <true/>
    <key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>
    
  • 6

    我发现在整个应用程序中隐藏状态栏的最简单方法是在 UIViewController 上创建 category 并覆盖 prefersStatusBarHidden . 这样您就不必在每个视图控制器中编写此方法 .

    UIViewController HideStatusBar.h

    #import <UIKit/UIKit.h>
    
    @interface UIViewController (HideStatusBar)
    
    @end
    

    UIViewController HideStatusBar.m

    #import "UIViewController+HideStatusBar.h"
    
    @implementation UIViewController (HideStatusBar)
    
    //Pragma Marks suppress compiler warning in LLVM. 
    //Technically, you shouldn't override methods by using a category, 
    //but I feel that in this case it won't hurt so long as you truly 
    //want every view controller to hide the status bar. 
    //Other opinions on this are definitely welcome
    
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
    
    - (BOOL)prefersStatusBarHidden
    {
        return YES;
    }
    
    #pragma clang diagnostic pop
    
    
    @end
    
  • -1

    -(BOOL)prefersStatusBarHidden { return YES; }

  • 6
    • 在plist add ----

    查看基于控制器的状态栏外观--- NO

    • 在每个viewController中写
    - (void) viewDidLayoutSubviews
    {
        CGRect viewBounds = self.view.bounds;
        CGFloat topBarOffset = 20.0;
        viewBounds.origin.y = -topBarOffset;
        self.view.bounds = viewBounds;
    
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style
    }
    

    对于iOS 7中的状态栏问题,但应用程序的目标应为5.1及更高版本

  • 278

    步骤隐藏iOS 7中的状态栏:

    1.转到您的应用程序info.plist文件 .

    2.And Set,View基于控制器的状态栏外观:布尔值NO

    希望我解决状态栏问题.....

  • 84

    对于iOS 7中的单个视图,请使用viewWillappear方法:

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
    

    要显示状态栏,请使用:

    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
    
  • 53

    在Info Plist文件中为以下属性添加一行

    属性名称:查看基于控制器的状态栏外观

    Value :没有

  • 11

    这个帖子的许多答案都有效,但是如果你想要做任何动态的话,我最终需要调用它是我的理解:

    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
    
  • 0

    尝试将以下方法添加到应用程序的根视图控制器:

    - (BOOL)prefersStatusBarHidden
        {
            return YES;
        }
    
  • 0

    我尝试了在我的项目中发布的所有这些选项,但它们无法正常工作 . 我认为这可能与我更新了我的 Xcode 然后将应用程序更新到iOS 7的事实有关,并且某些设置已经搞砸了 . 我决定为它构建一个全新的项目,经过简单的设置:“ Status bar is initially hidden = YES " and " View controller-based status bar appearance = NO ”正如许多其他人所说的那样它正常工作(即没有状态栏) .

    所以,如果您正在开发一个已从旧版本更新到iOS 7并已尝试所有其他项目的项目,那么我的建议是选项是 Build 一个新项目 .

  • 3

    你可以查看code,pod UIViewController+ODStatusBar

  • 0

    对于Swift 2.0 IOS 9

    override func prefersStatusBarHidden() -> Bool {
    return true
    }
    
  • 4

    隐藏特定viewController的状态栏

    - (BOOL)prefersStatusBarHidden {
        return YES;
    }
    

    用于设置隐藏应用程序的状态栏:

    • 在_plist和 application: didFinishLaunchingWithOptions: 中设置 View controller-based status bar appearanceNO 设置: [application setStatusBarHidden:YES];

    注意:setStatusBarHidden:不推荐使用

    要么

    项目设置中的

      • 常规选项卡 - >部署信息

    检查 Hide Status bar 框 .

  • 1
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    application.statusBarHidden = YES;
    return YES;
    }
    
  • 2

    我'm not sure why you 913183 , but (without violating the NDA) you can also hide your statusBar through Xcode. It'是您的应用程序目标的一般设置 .
    enter image description here

相关问题