如何在iOS 7中以编程方式隐藏状态栏?

在ios7中 ,如何以编程方式隐藏状态栏 ? 我正在使用XCode 4.6.1 ( ios6.1 ),我想在XCode本身实现这一点。

在iOS7中,你应该在你的viewController中实现

 - (BOOL)prefersStatusBarHidden { return YES; } 

您可以隐藏状态栏,在plist中设置键值“View controller-status bar appearance”NO。 这是最简单的方法。

或者你可以使用UIApplication类的属性statusBarHidden来隐藏代码。

 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 

Swift 3.0

隐藏任何特定视图控制器的状态栏

 override var prefersStatusBarHidden: Bool { get { return true } } 

在应用程序中隐藏状态

UIApplication.shared.isStatusBarHidden = true

并在项目信息列表中设置键值“查看控制器状态栏外观”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]; } 

如果你需要dynamic地隐藏/显示给定的视图控制器,你可以这样做。

(虽然我build议只使用- (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 

如果iOS> = 7.0,请使用以下代码:

句法:

 // Present in UIViewController of UIKit Frameworks - (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0); // Defaults to NO 

用法:

 - (BOOL)prefersStatusBarHidden { return YES; } 

在iOS <7.0中使用以下代码:

句法:

 // Present in UIApplication of UIKit Frameworks - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2); 

用法:

 [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

尝试这个

 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 

如果有人想要最新的方法来做到这一点(Swift 2.1和最新的Xcode 7.2)

  1. 将“在您的info.plist中将基于视图控制器的状态栏外观设置为NO”

  2. UIApplication.sharedApplication()。statusBarHidden = true //放在应用程序委托的地方(applicationWill或DidFinishLaunchingWithOptions:

我的经验是,你需要在iOS 9 / Xcode 7.3中的info.plist文件中的代码和值。

将此添加到您的viewDidLoad方法。

 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 

添加到您的info.plist文件作为布尔值,并将其设置为NO:

 View controller-based status bar appearance