iOS7中,您应该在viewController中实现
- (BOOL)prefersStatusBarHidden {
return YES;
}
你可以在plist中设置"View controller-based status bar appearance"为NO来隐藏状态栏,这是最简单的方法。
或者你可以使用UIApplication类的statusBarHidden属性在代码中进行隐藏。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
Swift 3.0
在任何特定的视图控制器中隐藏状态栏
override var prefersStatusBarHidden: Bool {
get {
return true
}
}
隐藏整个应用程序的状态栏
UIApplication.shared.isStatusBarHidden = true
并在项目的info.plist中将键值“View controller-based status bar appearance” 设置为NO。
- (void)viewDidLoad
{
[super viewDidLoad];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
{
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
else
{
// iOS 6
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}
}
// Add this method
- (BOOL)prefersStatusBarHidden {
return YES;
}
当 View controller-based status bar appearance
设置为 NO
时,要隐藏特定的ViewController(然后再次显示),请按照以下步骤操作:
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
}
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
}
- (BOOL)prefersStatusBarHidden
来返回您的偏好设置,如果您不需要更改它。)// view controller header
@interface MyViewController : UIViewController {
BOOL shouldHideStatusBar;
}
@end
@implementation
- (BOOL)prefersStatusBarHidden {
return shouldHideStatusBar; // backed by your instance variable
}
- (void)setPrefersStatusBarHidden:(BOOL)hidden {
shouldHideStatusBar = hidden;
// Don't call this on iOS 6 or it will crash since the
// `setNeedsStatusBarAppearanceUpdate` method doesn't exist
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
// [self setNeedsStatusBarAppearanceUpdate]; // (if Xcode 5, use this)
}
@end
步骤1. 在你的info.plist
中设置View controller-based status bar appearance
为YES
步骤2. 在UIViewController
中输入一些代码,当你呈现UIViewController
时状态栏将会隐藏。
private var statusBarIsHidden = false
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
statusBarIsHidden = true
setNeedsStatusBarAppearanceUpdate()
}
override var prefersStatusBarHidden: Bool {
return statusBarStatus
}
如果 iOS >= 7.0,请使用以下代码:
语法:
// Present in UIViewController of UIKit Frameworks
- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0); // Defaults to NO
使用方法:
- (BOOL)prefersStatusBarHidden {
return YES;
}
Syntax:
// Present in UIApplication of UIKit Frameworks
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);
使用方法:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
我的经验是在iOS 9 / Xcode 7.3中,您需要在info.plist文件中同时包含代码和值。
将此添加到您的viewDidLoad方法中。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
View controller-based status bar appearance
Info.plist
中将View controller-based status bar appearance
的值设置为YES
,否则相同的参数将在所有视图控制器中使用。UIViewController
子类中覆盖prefersStatusBarHidden
。override var prefersStatusBarHidden: Bool {
get {
return true
}
}
类似的方式也可以用来更改 preferredStatusBarStyle
override var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
在Swift 4中:
UIApplication.shared.isStatusBarHidden = ..true/false