StatusBar状态栏的隐藏实现

*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方法无效,是根本不会被调用的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容