在ios 9中隐藏状态栏
你如何隐藏ios 9中的状态栏?
现在已经弃用了:
[UIApplication sharedApplication] setStatusBarHidden:YES];
斯威夫特-3
override var prefersStatusBarHidden: Bool { return true }
我从这里得到了信息
-
将
func
更改为var
-
删除
()
-
更改
->
到:
这是可行的,因为一个计算variables有一个getter函数,所以你之前实现的函数只是变成了getter函数
2016年起:简单的事情
在你的info.plist中添加以下两个属性statusBar Hidden
查看基于控制器的状态栏外观(布尔值:NO)
状态栏最初是隐藏的(布尔:是)
按来源
<key>UIStatusBarHidden</key> <true/> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
要么
老答案! …
-
在
didFinishLaunchingWithOptions
添加application.statusBarHidden
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. application.statusBarHidden = YES; return YES; }
并添加
-
在
info.plist
添加这个View controller-based status bar appearance
设置NO
View controller-based status bar appearance = NO
基于viewcontroller的隐藏集
在视图控制器中添加方法。
目标-C
- (BOOL)prefersStatusBarHidden { return YES; }
快到2
override func prefersStatusBarHidden() -> Bool { return true }
(GOOD)2016.5.17在iOS 9.0中效果不错。
更新的答案
- 转到Info.plist文件
- 将鼠标hover在其中一行上,将显示(+)和( – )button。
- 点击加号button添加新的密钥
- input大写字母V开始,自动第一个选项将是基于视图控制器的状态栏外观 。 将其作为KEY添加。
- 将VALUE值设为“NO”
- 转到你的AppDelegate.m Objective-C( 用于swift语言:AppDelegate.swift )
- 在方法中添加代码
对于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)
我知道setStatusBarHidden:
的文档setStatusBarHidden:
没有提到什么使用。 但UIApplication
的标题呢。
// 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
并使用基于视图控制器的状态栏样式。
你现在需要做的是configuration视图控制器是否需要显示隐藏状态栏。 像这样:
- (BOOL)prefersStatusBarHidden { return YES; }
以下是如何轻松返回对iOS 9 +和Swift 3+的状态栏可见性的控制:
- 在
Info.plist
添加带有YES
值View controller-based status bar appearance
关键字。 -
将这个variables添加到视图控制器:
private var isStatusBarHidden = false { didSet { setNeedsStatusBarAppearanceUpdate() } }
-
覆盖
prefersStatusBarHidden
属性:override var prefersStatusBarHidden: Bool { return isStatusBarHidden }
而已。 现在您可以随时调用isStatusBarHidden = true
和isStatusBarHidden = false
。
如果由于某种原因,您需要View controller-based status bar appearance
等于YES
(例如保持状态栏为白色)
在AppDelegate的didFinishLaunchingWithOptions
方法或设置您的navigationController的任何地方:
yourNavigationController.navigationBar.barStyle = .black
然后使用alex-staravoitau真棒的答案,并添加这个代码,无论你将隐藏状态栏:
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
我不知道这是否是正确的方法来实现这个结果,但它对我有用,我希望它也可以帮助别人:)
在大多数iOS中,它将工作。 我已经testing了iOS 10。
- 打开info.plist
- “查看基于控制器的状态栏外观”设置为NO
- “状态栏最初隐藏”设置为YES
- 完成