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

你可能感兴趣的:(StatusBar状态栏的隐藏实现)