zoukankan      html  css  js  c++  java
  • 更改ios状态栏颜色

    更改状态栏颜色

    将iOS状态栏默认颜色为黑色,但有时为了需求,我们需要更改状态栏的颜色,常用的方式有:

    方法一:

      1.在info.plist添加View controller-based status bar appearance为NO;

      2.在页面执行[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]。

      但是这种做法在ios9.0以前是完全没有问题的,进入iOS9.0后,便会出现如下警告:

    <Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE en

       为了消除这条警告:修改方式如下:

    1.在info.plist删掉这条也可以,或者将View controller-based status bar appearance设置为YES

    2.在需要改变颜色的页面增加:(非全局,需要在每个需要的Viewcontroller中加入)

    -(UIStatusBarStyle)preferredStatusBarStyle    
    {    
        return UIStatusBarStyleLightContent;    
    } 

    但是问题又来了,如果我们初始化一个UINavigationController或者UITabBarController作为RootViewcontroller,那么在子viewController中设置的上诉解决方案就会失效,该怎么办呢?

    为UINavigationController扩展一个category,在类别里面实现如下方法,并通过UINavigationController调用该方法,那么在viewController中就可以实现状态栏颜色的改变了

    -(UIViewController *)childViewControllerForStatusBarStyle
    {
        return self.topViewController;
    }

    在状态栏发生改变时需要调用这个方法:

    [self setNeedsStatusBarAppearanceUpdate];

    设置状态栏的动画效果:

    -(UIStatusBarAnimation)preferredStatusBarUpdateAnimation{
       
    //    return UIStatusBarAnimationFade;
        return UIStatusBarAnimationSlide;
    }

    隐藏状态栏:

    如果不设置UINavigationController等,有两种方式隐藏状态栏

    方法一:

        1.将info.plist添加View controller-based status bar appearance为NO;

        2.将info.plist添加Status bar is initially hidden为 YES。

    方法二:(非全局)

    -(BOOL)prefersStatusBarHidden{
        return YES;
    }

    如果初始化一个UINavigationController或者UITabBarController作为RootViewcontroller,那么第二种方法就失效了,解决办法同更改状态栏颜色。

     

    在某一个界面中隐藏状态栏的方法:

    1.在 info.plist添加View controller-based status bar appearance为NO;

    2.在需要隐藏的页面:

    页面将要出现时:

    -(void)viewWillAppear:(BOOL)animated
    {
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];  
    }

    在页面消失的地方:

    -(void)viewWillDisappear:(BOOL)animated
    {
        [[UIApplication sharedApplication] setStatusBarHidden:No withAnimation:UIStatusBarAnimationFade];
    }

     

  • 相关阅读:
    代理 XP”组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用 sp_configure 来启用“代理 XP”。
    sql 操作常用操作语句 新增、修改字段等
    easyui 日期控件清空值
    jQuery文件上传插件jQuery Upload File 有上传进度条
    js中文乱码怎么解决【转】
    [转]SqlSever2005 一千万条以上记录分页数据库优化经验总结【索引优化 + 代码优化】一周搞定
    SqlBulkCopy批量添加数据
    常用正则表达式
    查询每张表的大小
    Jquery里的特定小技巧
  • 原文地址:https://www.cnblogs.com/moxuexiaotong/p/4928851.html
Copyright © 2011-2022 走看看