隐藏状态栏在ios 9

Hide the status bar in ios 9

ios9中如何隐藏状态栏?

现已弃用:

 [UIApplication sharedApplication] setStatusBarHidden:YES];

我知道 setStatusBarHidden: 的文档中没有提到具体用途。但是 UIApplication 的 header 可以。

// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]");
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_DEPRECATED_IOS(3_2, 9_0, "Use -[UIViewController prefersStatusBarHidden]");

此处声明您应该在 UIViewController 上使用 prefersStatusBarHidden 并使用基于视图控制器的状态栏样式。

您现在需要做的就是配置视图控制器是否需要显示或隐藏状态栏。像这样:

- (BOOL)prefersStatusBarHidden {
   return YES;
}

Swift-3

 override var prefersStatusBarHidden: Bool {  
    return true  
}  

我从

那里得到了信息
  • func改为var

  • 删除()

  • ->更改为:

这是有效的,因为计算变量有一个 getter 函数,所以你之前实现的函数简单地变成了 getter 函数


2016 年起:简单的东西

在你的 info.plist 上为 statusBar Hidden

添加以下两个 属性

查看基于控制器的状态栏外观(布尔值:否)

状态栏最初是隐藏的(布尔值:是)

按来源

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


旧答案! ...

  1. didFinishLaunchingWithOptions

    中添加application.statusBarHidden
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    application.statusBarHidden = YES;
    return YES;
    }
    

并添加

  1. info.plist中添加这个View controller-based status bar appearance设置NO

    View controller-based status bar appearance = NO
    

viewcontroller 基于隐藏集

在您的视图控制器中添加方法。

Objective-C

- (BOOL)prefersStatusBarHidden {
    return YES;
}

Swift 最多 2

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

(良好)2016.5.17 在 iOS 9.0 中运行良好。

更新答案

  1. 转到 Info.plist 文件
  2. 将鼠标悬停在其中一行上,将显示 (+) 和 (-) 按钮。
  3. 单击加号按钮添加新密钥
  4. 输入 以大写字母 V 开头,第一个选项将自动成为 基于视图控制器的状态栏外观 。将其添加为 KEY。
  5. 将值设置为 "NO"
  6. 去找你 AppDelegate.m for Objective-C (for swift 语言: AppDelegate.swift)
  7. 在方法里面添加代码

对于Objective-C:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [application setStatusBarHidden:YES];

    return YES;
}

对于Swift:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
    application.statusBarHidden = true

    return true
}

在info.plist中添加下面两个属性.

View controller-based status bar appearance (NO)

Status bar is initially hidden (YES)

以下是您如何轻松 return 控制 iOS 9+Swift 的状态栏可见性3+:

  1. 将具有 YES 值的 View controller-based status bar appearance 键添加到 Info.plist
  2. 将此变量添加到视图控制器:

    private var isStatusBarHidden = false {
        didSet {
            setNeedsStatusBarAppearanceUpdate()
        }
    }
    
  3. 覆盖 prefersStatusBarHidden 属性:

    override var prefersStatusBarHidden: Bool {
        return isStatusBarHidden
    }
    

就是这样。现在您可以随时调用 isStatusBarHidden = trueisStatusBarHidden = false

如果出于某种原因您需要 View controller-based status bar appearance 等于 YES(例如保持状态栏为白色)

在 AppDelegate 的 didFinishLaunchingWithOptions 方法或您设置导航控制器的任何地方:

yourNavigationController.navigationBar.barStyle = .black

然后使用 的绝妙答案并在您要隐藏状态栏的任何位置添加此代码:

override var preferredStatusBarStyle: UIStatusBarStyle {
  return .lightContent
}

我不确定这是否是实现此结果的正确方法,但它对我有用,我希望它也能帮助其他人:)

在大多数 iOS 中它都可以工作。我用 iOS 10.

测试过
  1. 打开info.plist
  2. "View controller-based status bar appearance" 设为否
  3. "Status bar is initially hidden" 设置为是
  4. 完成

一个简单的方法是根据您的需要将应用程序的 windowLevel 设置为正常或状态栏,因此开始

Objective-C

隐藏状态栏

 UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelStatusBar;

显示状态栏

 UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelNormal;

同时添加布尔值NO.KeyView controller-based status bar appearance