StatusBar状态栏的隐藏实现
2016-07-30 本文已影响5158人
by小杰
*StatusBar隐藏的两种需求:
1.要求所有页面
的状态栏, 都隐藏
2.仅特别指定的某一个页面
的状态栏实现隐藏
*实现步骤
需求1.隐藏所有页面的状态栏
# step1: 在工程的info.plist文件中, 添加`View controller-based status bar appearance`-->值为: `NO`
# step2: 在AppDelegate文件中, 实现下面方法
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
//该方法已被弃用, 但仍有效果
注释: 在info.plist文件的设置, 表示状态栏的隐藏设置以appdelegate设置为准, controller中的方法不会只执行
需求2.仅特别指定的某一个页面的状态栏实现隐藏
# step1: 在工程的info.plist文件中, 添加View controller-based status bar appearance-->值为: YES
# step2: 在指定的controller文件中, 实现下面方法
//在试图将要已将出现的方法中
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
//调用隐藏方法
[self prefersStatusBarHidden];
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
}
//实现隐藏方法
- (BOOL)prefersStatusBarHidden{
return YES;
}
注释:info.plist文件中,View controller-based status bar appearance项设为YES,
则View controller对status bar的设置优先级高于application的设置。
为NO则以application的设置为准,view controller的prefersStatusBarHidden方法无效,是根本不会被调用的。