你如何在 ios 9 中隐藏状态栏?
现在已弃用:
[UIApplication sharedApplication] setStatusBarHidden:YES];
你如何在 ios 9 中隐藏状态栏?
现在已弃用:
[UIApplication sharedApplication] setStatusBarHidden:YES];
斯威夫特-3
override var prefersStatusBarHidden: Bool {
return true
}
我从这里得到信息
更改func
为var
删除()
更改->
为:
这是因为计算变量有一个 getter 函数,所以你之前实现的函数只是变成了 getter 函数
2016 年以后:简单之类的
在您的 info.plist 上为 statusBar Hidden 添加以下两个属性
查看基于控制器的状态栏外观(布尔值:否)
状态栏最初是隐藏的(布尔值:是)
按来源
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
或者
老答案!...
加入application.statusBarHidden
_didFinishLaunchingWithOptions
- (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
基于视图控制器的隐藏集
在视图控制器中添加方法。
目标-C
- (BOOL)prefersStatusBarHidden {
return YES;
}
斯威夫特高达 2
override func prefersStatusBarHidden() -> Bool {
return true
}
(好)iOS 9.0 中的 2016.5.17 运行良好。
更新的答案
对于 Objective-C:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[application setStatusBarHidden:YES];
return YES;
}
对于斯威夫特:
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:
没有提到什么用途。但标题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]");
这里声明您应该使用prefersStatusBarHidden
onUIViewController
并使用基于视图控制器的状态栏样式。
您现在需要做的就是配置视图控制器是否需要显示或隐藏状态栏。像这样:
- (BOOL)prefersStatusBarHidden {
return YES;
}
以下是如何轻松返回对iOS 9+和Swift 3+状态栏可见性的控制:
View controller-based status bar appearance
将具有YES
值的键添加到Info.plist
.将此变量添加到视图控制器:
private var isStatusBarHidden = false {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
覆盖prefersStatusBarHidden
属性:
override var prefersStatusBarHidden: Bool {
return isStatusBarHidden
}
而已。isStatusBarHidden = true
现在您可以随时拨打电话isStatusBarHidden = false
。
一种简单的方法是windowLevel
根据您的需要将 Application 设置为 normal 或 statusBar ,因此开始
Objective-C
隐藏状态栏
UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelStatusBar;
显示状态栏
UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelNormal;
还添加布尔值 NO 的Key
(基于视图控制器的状态栏外观)。
如果由于某种原因您需要View controller-based status bar appearance
等于YES
(例如保持状态栏为白色)
在 AppDelegate 的didFinishLaunchingWithOptions
方法或您设置导航控制器的任何位置:
yourNavigationController.navigationBar.barStyle = .black
然后使用alex-staravoitau的真棒答案,并在您要隐藏状态栏的任何地方添加此代码:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
我不确定这是否是实现此结果的正确方法,但它对我有用,我希望它也对其他人有所帮助:)
在大多数 iOS 中它都可以工作。我已经用 iOS 10 进行了测试。