iOS 状态栏颜色

作者: 爱在心_001 | 来源:发表于2021-02-20 10:30 被阅读0次

    项目中使用

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
    

    会报警告
    'setStatusBarStyle:' is deprecated: first deprecated in iOS 9.0 - Use -[UIViewController preferredStatusBarStyle]
    解决办法:
    消除这个警告需要使用preferredStatusBarStyle这个API,
    在项目中的info.plist文件里添加View controller-based status bar appearance,并修改成YES


    WeChat144aeb38f19be4bb8afcbfb089c30d89.png

    定义一个UIStatusBarStyle变量

    @property (nonatomic, assign) UIStatusBarStyle myStatusBarStyle;
    

    设置状态栏默认显示为黑色

    - (void)viewDidLoad {
        [super viewDidLoad];
        //默认状态栏为黑色
        self.myStatusBarStyle = UIStatusBarStyleDefault;
    }
    

    自定义某个控制器中的颜色

    重写这个,返回你想要的状态
    - (UIStatusBarStyle)preferredStatusBarStyle {
        NSLog(@"改变状态栏颜色");
        return self.myStatusBarStyle;
    }
    

    更新状态

    ///监听scrollView的滚动事件
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
        if (scrollView == self.myTableView) {
            CGFloat offsetY = scrollView.contentOffset.y;
            if (offsetY > 0) {
                //[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
                self.myStatusBarStyle = UIStatusBarStyleDefault;
                [self setNeedsStatusBarAppearanceUpdate];
            } else {
                //[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
                self.myStatusBarStyle = UIStatusBarStyleLightContent;
                [self setNeedsStatusBarAppearanceUpdate];
            }
        }
    }
    

    这样就可以修改状态栏的颜色

    当视图控制器的状态栏属性的返回值发生变化时,会被调用。如果在一个block块中调用它,那么更改将与block块的其余部分一起被动画化。
    - (void)setNeedsStatusBarAppearanceUpdate
    

    如果想在启动的时候就隐藏状态栏
    在Info.plist中增加一个配置即可:Status bar is initially hidden 为YES
    这里的YES表示在app初始化(启动)的时候就隐藏状态栏。
    当然,在启动图显示完毕后状态栏还是隐藏的。如果想重新显示状态栏,补上下面代码即可:
    [UIApplication sharedApplication].statusBarHidden = NO;

    相关文章

      网友评论

        本文标题:iOS 状态栏颜色

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