您需要在每个视图控制器上覆盖此方法,除非您有该 plist 条目。
Objective-C
-(BOOL)prefersStatusBarHidden{
return YES;
}
斯威夫特 2
override func prefersStatusBarHidden() -> Bool {
return true
}
Swift 3+
override var prefersStatusBarHidden: Bool {
return true
}
并且不要忘记设置(如果您通过调用 presentViewController:animated:completion: 方法呈现视图控制器):
Objective-C
vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = YES;
斯威夫特
vcToBeShownWithoutStatusbar.modalPresentationCapturesStatusBarAppearance = true
文档:https://developer.apple.com/reference/uikit/uiviewcontroller/1621453-modalpresentationcapturesstatusb
如果您从某个容器视图控制器更改状态栏(例如,UINavigationController 或带有子视图控制器的UIViewController)并且您想更改负责状态栏的视图控制器,您应该使用childViewControllerForStatusBarHidden: 属性。例如:
设置第一个视图控制器实例始终负责状态栏管理
Objective-C
- (UIViewController *)childViewControllerForStatusBarHidden {
return childViewControllers.first; // or viewControllers.first
}
斯威夫特 2
override var childViewControllerForStatusBarHidden() -> UIViewController? {
return childViewControllers.first // or viewControllers.first
}
Swift 3+
override var childViewControllerForStatusBarHidden: UIViewController? {
return childViewControllers.first // or viewControllers.first
}
设置容器视图控制器负责状态栏管理
Objective-C
- (UIViewController *)childViewControllerForStatusBarHidden {
return nil;
}
斯威夫特 2
override func childViewControllerForStatusBarHidden() -> UIViewController? {
return nil
}
Swift 3+
override var childViewControllerForStatusBarHidden: UIViewController? {
return nil
}
文档:
https://developer.apple.com/documentation/uikit/uiviewcontroller/1621451-childviewcontrollerforstatusbarh