美文网首页开发锦集
iOS之状态栏设置

iOS之状态栏设置

作者: YvanLiu | 来源:发表于2017-05-22 13:49 被阅读73次

    刚刚建项目的时候遇到的,记录一下。

    首先:

    info.plist中的View controller-based status bar appearance设置为NO
    如果没有的话,就添加一条设置为NO
    没有设置的话,我刚试过,怎么改变status bar都没有效果。

    然后:

    1、就可以按照UI效果做相应调整了。

    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;  
       UIStatusBarStyleDefault             // 黑色                                   
       UIStatusBarStyleLightContent        // 白色
      // 目前来说基本就这两个,还有两个是7.0之前的
    

    可以放在AppDelegate中,也可以放在BaseViewController中,看实际需求.

    2、也可以在viewController中重写这个方法同样的效果

    - (UIStatusBarStyle)preferredStatusBarStyle {  
        return UIStatusBarStyleDefault;  
    } 
    

    3、也可以在General中设置


    4、或者如果只有一个页面有特殊要求的话,可以这样

    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent animated:NO];
    }
    
    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault animated:NO];
    }
    

    5、如果没有导航条的页面,会感觉到状态栏是不透明的,下面的颜色顶不到最上面,像这样:



    请相信状态栏其实是透明的,是因为高度的开始坐标是从状态栏下开始的,所以减去状态栏的高度就好了

    // 高度设成-20 就好了
    self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, -20, SCREEN_WIDTH, SCREEN_HEIGHT) style:UITableViewStylePlain];
    

    6、隐藏方法,同样也要View controller-based status bar appearance设置为NO

    [UIApplication sharedApplication].statusBarHidden = YES;
    // 同样有重写方法
    - (BOOL)prefersStatusBarHidden{
       return YES;
    }
    
    
    最后

    Hide status bar勾选之后 plist中会出现:

    网上说这个属性设置为YES会使启动页的状态栏隐藏掉。
    但是我试了一下:
    View controller-based status bar appearance设置为YES时,是隐藏掉启动页的状态栏。
    View controller-based status bar appearance设置为NO时,所有的状态栏都隐藏掉了。

    相关文章

      网友评论

        本文标题:iOS之状态栏设置

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