关于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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 接《iOS知识点大总结一》 三十四、主线程操作UI(对UI进行更新只能在主线程进行) 解释:所谓的在主线程更新UI...
    RunningMan_Fly阅读 5,342评论 0 0
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 7,374评论 1 14
  • IOS的项目多数会遇到控制状态栏和导航栏的问题,比如隐藏状态栏、控制状态栏的文字颜色等,导航栏也有同样需求。本文总...
    YHWXQ简简单单的生活阅读 5,713评论 1 8
  • 女人啊,如果没有漂亮的外貌,就不要肖想爱情。 可以凭着自身的努力,锻炼一身的本事,拥有充实的生活。 除了爱情,还有很多。
    杜一一阅读 1,175评论 0 1
  • 11月1日,我县教育系统语言文字行文规范培训活动在县教育局1号楼报告厅举行。全县各学校语言文字工作相关人员...
    星光漫天阅读 1,459评论 0 1

友情链接更多精彩内容