如何在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)
-
将“在您的info.plist中将基于视图控制器的状态栏外观设置为NO”
-
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