在我的UIViewController
中,我有:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
[self.view sizeToFit];
}
然而,观点看起来像这样:
我确定此代码已运行。我从xib
加载视图。我没有对状态栏做任何其他事情,比如改变它的风格。可能有什么不对?
即使我设置`application.statusBarHidden = YES"在我的应用代表中,我看到了:
答案 0 :(得分:62)
在您的应用程序的plist中,如果您将“View controller-based status bar appearance”设置为YES,请将此代码放在您隐藏状态栏的视图控制器中:
- (BOOL)prefersStatusBarHidden {
return YES;
}
否则,如果“查看基于控制器的状态栏外观”设置为“否”,则只要您想隐藏状态栏,请调用以下内容。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
答案 1 :(得分:45)
如果您想在应用中隐藏状态栏,请按以下步骤操作:
第1步:
第2步:
第3步:
添加到您的appDelegate didFinishLaunchingWithOptions函数
application.statusBarHidden = YES;
所以:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
application.statusBarHidden = YES;
}
答案 2 :(得分:12)
那是因为iOS 7改变了它处理状态栏的方式。
在您的应用UIViewControllerBasedStatusBarAppearance
上设置NO
至Info.plist
应该有效。
答案 3 :(得分:11)
您可以使用以下代码显示/隐藏您的应用状态栏(适用于IOS 7 - IOS 8和IOS 9):
在你的项目.h文件中添加这个布尔值:
BOOL isShowStatus;
在.m文件中添加:
//To show the status bar:
-(void)showTheStatusBar
{
isShowStatus = YES;
[self setNeedsStatusBarAppearanceUpdate];
}
//And to hide the status bar:
-(void)hideTheStatusBar
{
isShowStatus = NO;
[self setNeedsStatusBarAppearanceUpdate];
}
- (BOOL)prefersStatusBarHidden {
return !isShowStatus;
}
只需从任何地方调用它,例如:
- (void)viewDidLoad
{
[super viewDidLoad];
//To show the status bar:
[self showTheStatusBar];
//Or to hide it:
[self hideTheStatusBar];
}
答案 4 :(得分:5)
对我而言,它运作良好:
- (BOOL)prefersStatusBarHidden { return YES; }
始终在根视图中。如果您在子视图中执行此操作将无法工作,因为状态栏可见性将从父视图中获取。
答案 5 :(得分:-2)
在隐藏状态栏后尝试添加此项:
[self.view setFrame:[self.view bounds]];
在didFinishLaunchingWithOptions
的appdelegate.m中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
application.statusBarHidden = YES;
}
当我运行你的代码时: