我试过了
[[UIApplication sharedApplication] setStatusBarHidden:YES];
这什么也没做。
而且我在Info.plist
文件中查找了“基于视图控制器的状态栏外观”,但它不存在。
如何在Xcode 6的应用程序内隐藏屏幕顶部的白色状态栏(带有时钟和电池电量)?谢谢!
我试过了
[[UIApplication sharedApplication] setStatusBarHidden:YES];
这什么也没做。
而且我在Info.plist
文件中查找了“基于视图控制器的状态栏外观”,但它不存在。
如何在Xcode 6的应用程序内隐藏屏幕顶部的白色状态栏(带有时钟和电池电量)?谢谢!
Answers:
除非您具有该plist条目,否则您需要在每个视图控制器上重写此方法。
物镜
-(BOOL)prefersStatusBarHidden{
return YES;
}
迅捷2
override func prefersStatusBarHidden() -> Bool {
return true
}
迅捷3+
override var prefersStatusBarHidden: Bool {
return true
}
并且不要忘记进行设置(如果您通过调用presentViewController:animated:completion:方法来呈现视图控制器):
物镜
vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES;
迅速
vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true
文档:https : //developer.apple.com/reference/uikit/uiviewcontroller/1621453-modalpresentationcapturesstatusb
如果您从某个容器视图控制器(例如,UINavigationController
或UIViewController
带有子视图控制器)更改状态栏,并且想要更改负责状态栏的视图控制器,则应使用childViewControllerForStatusBarHidden:
属性。例如:
设置始终负责状态栏管理的第一个视图控制器实例
物镜
- (UIViewController *)childViewControllerForStatusBarHidden {
return childViewControllers.first; // or viewControllers.first
}
迅捷2
override var childViewControllerForStatusBarHidden() -> UIViewController? {
return childViewControllers.first // or viewControllers.first
}
迅捷3+
override var childViewControllerForStatusBarHidden: UIViewController? {
return childViewControllers.first // or viewControllers.first
}
设置容器视图控制器负责状态栏管理
物镜
- (UIViewController *)childViewControllerForStatusBarHidden {
return nil;
}
迅捷2
override func childViewControllerForStatusBarHidden() -> UIViewController? {
return nil
}
迅捷3+
override var childViewControllerForStatusBarHidden: UIViewController? {
return nil
}
文档:https : //developer.apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh
setNeedsStatusBarAppearanceUpdate
如果您需要在任意时间强制更新当前的ViewController,请别忘了致电
对于Objective-C:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[application setStatusBarHidden:YES];
return YES;
}
对于Swift:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:Any]?) -> Bool {
application.statusBarHidden = true
return true
}
做完了!运行您的应用程序,不再有状态栏!
您可以隐藏状态栏而无需编写任何代码,只需在info.plist中输入两个条目,第一个是
将“基于视图控制器的状态栏外观”设置为“否”
第二个是
“状态栏最初被隐藏”设置为“是”
对于带有Swift 3的iOS 10,您应该使用:
override var prefersStatusBarHidden: Bool {
get {
return true
}
}