【发布时间】:2016-01-03 02:43:39
【问题描述】:
ios 9 中如何隐藏状态栏?
现在已弃用:
[UIApplication sharedApplication] setStatusBarHidden:YES];
【问题讨论】:
标签: ios objective-c swift swift3 statusbar
ios 9 中如何隐藏状态栏?
现在已弃用:
[UIApplication sharedApplication] setStatusBarHidden:YES];
【问题讨论】:
标签: ios objective-c swift swift3 statusbar
Swift-3
override var prefersStatusBarHidden: Bool {
return true
}
我从Here得到信息
将func更改为var
删除()
将->更改为:
这是因为计算变量有一个 getter 函数,所以你之前实现的函数只是变成了 getter 函数
2016 年以后:简单的事
在你的 info.plist 中为 statusBar Hidden 添加以下两个属性
查看基于控制器的状态栏外观(布尔值:否)
状态栏最初是隐藏的(布尔值:YES)
按来源
<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
基于视图控制器的隐藏集
在视图控制器中添加方法。
目标-C
- (BOOL)prefersStatusBarHidden {
return YES;
}
Swift 高达 2
override func prefersStatusBarHidden() -> Bool {
return true
}
(GOOD) 2016.5.17 在 iOS 9.0 中运行良好。
更新答案
对于 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: 的文档没有提到什么用途。但是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 并使用基于视图控制器的状态栏样式。
您现在需要做的就是配置视图控制器是否需要显示或隐藏状态栏。像这样:
- (BOOL)prefersStatusBarHidden {
return YES;
}
【讨论】:
以下是您如何轻松控制 iOS 9+ 和 Swift 3+ 的状态栏可见性:
YES 值的View controller-based status bar appearance 键添加到Info.plist。将此变量添加到视图控制器:
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 中它都可以工作。我已经使用 iOS 10 进行了测试。
【讨论】: