关于iOS的状态栏设置透明色的问题

最近很多情况,UED的部门要求状态栏是透明色,显示背景的颜色!

起初,我想获取这个控件,并将这个控件背景色设置为透明色。
结果:我根本无法获取这个控件。

第二部:在包含导航栏的时候,我发现可以通过导航栏,设置导航栏背景来改变
结果: 这个方法只能解决一部分情况!
如果遇到了隐藏导航栏,无导航栏或者自定义导航栏时,我们该怎么办?

今天,突然上网查了下方案:cocoaChina真的有神人能定位解决这个问题
http://www.cocoachina.com/bbs/read.php?tid=1714043

大神的回答,我转摘如下:
1.导航栏本身是透明的,但是控制器添加视图会有20的偏移量。本来就是透明的,只是你的视图的frame.origin.y是从0开始的,也就是状态栏的底部,设置成-20就可以了
2.设置控制器的 self.automaticallyAdjustsScrollViewInsets = YES;就会从顶部显示
3.如果要导航栏和状态栏都全透明的话

    self.navigationController.navigationBar.translucent = YES;
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [UIImage new];

我的情况如下:导航栏被隐藏了。仅仅下面这句话:
self.automaticallyAdjustsScrollViewInsets = YES;不够的

然后,我设置位置偏移-20,如下:

    [self.view addSubview: self.scrollView];
    [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make){
        make.top.equalTo(self.view).offset(-20);
        make.left.right.equalTo(self.view);
        make.bottom.equalTo(self.view.mas_bottom).offset(-44);
    }];

成功实现状态栏 完全透明的,直接反馈背景的颜色!!!!!

(不积跬步无以至千里,这些小知识点一定要多积累!)

近期需求又改了,要求状态栏有遮挡,需要view 与scrollview 进行配合
当scrollView 约束为下面时
make.top.equalTo(self.view).offset(0);
效果:初始位置遮挡,滑动后没有遮挡。
make.top.equalTo(self.view).offset(20);
效果:初始位置遮挡,滑动后也有遮挡。

PS:补充知识:
http://www.jianshu.com/p/63f758796438

你可能感兴趣的:(关于iOS的状态栏设置透明色的问题)