setStatusBarHidden不起作用
在我的UIViewController
,我有:
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; [self.view sizeToFit]; }
但是视图看起来像这样:
我确定这段代码运行了。 我从xib
加载视图。 我没有对状态栏做任何其他事情,比如改变它的风格。 可能有什么不对?
即使我在我的app委托中设置`application.statusBarHidden = YES’,我也看到:
在应用程序的plist中,如果将“View controller-based status bar appearance”设置为YES,则将此代码放在视图控制器中,在该视图控制器中隐藏状态栏:
- (BOOL)prefersStatusBarHidden { return YES; }
否则,如果“查看基于控制器的状态栏外观”设置为“否”,则只要您想隐藏状态栏,请调用以下内容。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
如果要在应用中隐藏状态栏,请执行以下步骤:
步骤1 :
第2步:
第3步:
添加到您的appDelegate didFinishLaunchingWithOptions函数
application.statusBarHidden = YES;
所以:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { application.statusBarHidden = YES; }
这是因为iOS 7改变了它处理状态栏的方式。
在应用程序Info.plist
上将UIViewControllerBasedStatusBarAppearance
设置为NO
应该可以正常工作。
您可以使用以下代码显示/隐藏您的应用程序状态栏(适用于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]; }
对我来说它工作正常:
- (BOOL)prefersStatusBarHidden { 返回YES; }
总是在根视图中。 如果您在子视图中执行此操作将无法工作,因为状态栏可见性将从父视图中获取。
隐藏状态栏后尝试添加此项:
[self.view setFrame:[self.view bounds]];
在didFinishLaunchingWithOptions
的appdelegate.m中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { application.statusBarHidden = YES; }
当我运行你的代码时: