美文网首页
iOS statusBar

iOS statusBar

作者: 奔跑吧小蚂蚁 | 来源:发表于2018-05-15 17:10 被阅读271次

    1.statusBar Info.plist文件配置说明详

    分别在 Info.plist中添加以下字段,分别表示

    1.Status bar is initially hidden  在程序启动过程中是否隐藏状态栏 需要隐藏 YES 不隐藏 NO。
    
    2.View controller-based status bar appearance 全局statusbar默认样式,这个可以这样理解 当设置为YES是全局样式统一,只可通过- (BOOL)prefersStatusBarHidden ,进行隐藏设置 ,默认黑色字体,可编辑性较差,所以此处一般设为NO。
    
    3.Status bar style  字体颜色设置
    typedef NS_ENUM(NSInteger, UIStatusBarStyle) {
        UIStatusBarStyleDefault                                     = 0, // Dark content, for use on light backgrounds
        UIStatusBarStyleLightContent     NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds
        
        UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
        UIStatusBarStyleBlackOpaque      NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
    } __TVOS_PROHIBITED;
    
    由此我们可以看出Status bar style 提供四个接口参数,其中UIStatusBarStyleBlackTranslucent ,UIStatusBarStyleBlackOpaque iOS7之后已经废弃,我们常用的UIStatusBarStyleDefault 黑色字体  UIStatusBarStyleLightContent 白色字体两种
    
    
    如图: info.png

    2.自定义状态栏背景颜色

    效果如下: 背景颜色.png

    代码如下:

    - (void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:YES];
        //在将要显现页面时进行,颜色设置
        [self setStatusBarBackgroundColor:[UIColor blueColor]];
    }
    - (void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:YES];
        //在页面将要离开事对设置颜色进行置空恢复原来的颜色,或者clearColor 在此之前打印其背景颜色你会发现是空的。
        [self setStatusBarBackgroundColor:NULL];
    }
    //设置状态栏颜色
    - (void)setStatusBarBackgroundColor:(UIColor *)color {
        UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
        if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
            statusBar.backgroundColor = color;
        }
    }
    

    3.隐藏设置 及动画

    一切尽在无言中

    - (IBAction)show:(id)sender {
        [UIView animateWithDuration:1.0 animations:^{
    //        typedef NS_ENUM(NSInteger, UIStatusBarAnimation) {
    //            UIStatusBarAnimationNone,无动画效果
    //            UIStatusBarAnimationFade,颜色渐变效果动画
    //            UIStatusBarAnimationSlide,滑动动画
    //        } __TVOS_PROHIBITED;
            //直接出现
            //[[UIApplication sharedApplication] setStatusBarHidden:NO];
            //颜色渐渐变深直到出现
            //[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES];
            //颜色渐渐变深直到出现
            [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
        }];
    }
    - (IBAction)hide:(id)sender {
        
        [UIView animateWithDuration:1.0 animations:^{
            //直接消失
            //[[UIApplication sharedApplication] setStatusBarHidden:NO];
            //颜色渐渐变浅直到消失
            [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
        }];
    }
    - (void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:YES];
        //在页面将要离开事对设置颜色进行置空恢复原来的颜色,或者clearColor 在此之前打印其背景颜色你会发现是空的。
        [self setStatusBarBackgroundColor:NULL];
       [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
    }
    
    

    相关文章

      网友评论

          本文标题:iOS statusBar

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