我努力了
[[UIApplication sharedApplication] setStatusBarHidden:YES];
这无济于事。
我在我的 Info.plist
文件中查看了“查看基于控制器的状态栏外观”,但它不存在。
如何在 Xcode 6 的应用程序内隐藏屏幕顶部的白色状态栏(带有时钟和电池电量)?谢谢!
除非您有该 plist 条目,否则您需要在每个视图控制器上覆盖此方法。
Objective-C
-(BOOL)prefersStatusBarHidden{
return YES;
}
斯威夫特 2
override func prefersStatusBarHidden() -> Bool {
return true
}
斯威夫特 3+
override var prefersStatusBarHidden: Bool {
return true
}
并且不要忘记设置(如果您通过调用 presentViewController:animated:completion: 方法呈现视图控制器):
Objective-C
vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES;
迅速
vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true
如果您从某个容器视图控制器更改状态栏(例如,带有子视图控制器的 UINavigationController
或 UIViewController
)并且您想更改负责状态栏的视图控制器,您应该使用 childViewControllerForStatusBarHidden:
属性。例如:
设置第一个视图控制器实例始终负责状态栏管理
Objective-C
- (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
}
设置容器视图控制器负责状态栏管理
Objective-C
- (UIViewController *)childViewControllerForStatusBarHidden {
return nil;
}
斯威夫特 2
override func childViewControllerForStatusBarHidden() -> UIViewController? {
return nil
}
斯威夫特 3+
override var childViewControllerForStatusBarHidden: UIViewController? {
return nil
}
转到 Info.plist 文件 将鼠标悬停在其中一行上,将显示 (+) 和 (-) 按钮。单击加号按钮添加新键 键入以大写 V 开头,自动第一个选择将是基于视图控制器的状态栏外观。将其添加为 KEY。将 VALUE 设置为“NO”转到您的 AppDelegate.m for Objective-C(对于 swift 语言:AppDelegate.swift)在方法内添加代码
对于 Objective-C:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[application setStatusBarHidden:YES];
return YES;
}
对于斯威夫特:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey:Any]?) -> Bool {
application.statusBarHidden = true
return true
}
完毕!运行您的应用程序,不再有状态栏!
您无需编写任何代码即可隐藏状态栏,它只需要在 info.plist 中输入两个条目,第一个是
“基于视图控制器的状态栏外观”设置为 NO
第二个是
“状态栏最初是隐藏的”设置为 YES
如果该行不存在,您可以将该行添加到您的 Info.plist 文件中。只需转到 Xcode 中的项目,转到“信息”部分,然后将鼠标悬停在现有行之一上。应该会出现一个“+”按钮,允许您添加一行并输入“查看基于控制器的状态栏外观”。
对于带有 Swift 3 的 iOS 10,您应该使用:
override var prefersStatusBarHidden: Bool {
get {
return true
}
}
打开 info.plist “查看基于控制器的状态栏外观”设置为 NO “状态栏最初隐藏”设置为 YES 完成
无需编写一行代码...干杯
如果你使用 UIDocumentInteractionController 来显示数据,那么你永远不会隐藏状态栏,所以我有这个替代
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
此行将状态栏内容的颜色更改为白色
setNeedsStatusBarAppearanceUpdate