美文网首页iOS Developer
iOS 状态栏颜色、隐藏等

iOS 状态栏颜色、隐藏等

作者: alvin_ding | 来源:发表于2016-12-01 18:11 被阅读101次

    View controller-based status bar appearance 设置为NO的情况

    这种可以在工程的 General 中选择配置,当然也可以在代码中进行设置,使用如下的代码,想单独修改某一个控制器的,也是下面的代码

    p.s. 这些方法在iOS9之后都废弃了,不建议使用

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    

    View controller-based status bar appearance 设置为YES的情况

    未使用navigation bar / 隐藏了navigation bar

    这种情况 只要在当前控制器里重写下面的方法就可以了

    - (UIStatusBarStyle)preferredStatusBarStyle {
        return UIStatusBarStyleLightContent;
    }
    

    使用了navigation bar

    重写这个方法是不起作用的

    - (UIStatusBarStyle)preferredStatusBarStyle {
        return UIStatusBarStyleLightContent;
    }
    

    这个时候有两种选择,一是在对应的导航控制器中设置好颜色,方法也是重写preferredStatusBarStyle,另一种是使用下面的代码修改,如果只是想修改一个单独的页面,可以在生命周期的方法中设置和重置,比如viewWillAppear 和 viewWillDisappear 中设置

    [self.navigationController.navigationBar setBarStyle:UIBarStyleBlack];
    

    隐藏状态栏

    在当前控制器里重写下面方法

    - (BOOL)prefersStatusBarHidden {
        return self.hideStatusBar;
    }
    

    如果使用了变量控制隐藏状态,在变量值修改之后,要调用下面方法

    self.hideStatusBar = YES;
    [self setNeedsStatusBarAppearanceUpdate];
    

    下面这种方式会失效

    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
    

    相关文章

      网友评论

        本文标题:iOS 状态栏颜色、隐藏等

        本文链接:https://www.haomeiwen.com/subject/cmtfmttx.html