博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS7自定义statusbar和navigationbar的若干问题
阅读量:4958 次
发布时间:2019-06-11

本文共 1202 字,大约阅读时间需要 4 分钟。

当然有许多问题是这篇文章中没有提到的,按照文章的方法进行设置,你可能会遇到以下问题: 

1.navigationbar的背景图片自定义以后,statusbar虽然和navigationbar共用了背景图,但是其还是透明的,颜色会比navigationbar淡许多,导致最终效果很难看,那么如何修复这个问题呢?很简单调用以下方法: 

self.navigationController.navigationBar.translucent = NO;

此时navigationbar和statusbar就融为一体了,实现了类似evennote的那种效果。 

我曾经试图通过设置: 

self.extendedLayoutIncludesOpaqueBars = YES;

来修复这个问题,我之所以会想到这个办法是因为通过设置controller的view的背景色我发现,statusbar下面似乎没有被背景色填充,事实却证明此方法行不通。 

2.自定义navigationbar的背景图以后pop一个controller播放动画时,statusbar和navigationbar所在的位置会显示navigationcontroller的背景色,因为默认是黑色的,如果你的controller的背景色不是黑色的就会非常难看。那么解决这个问题的关键就是将:

self.extendedLayoutIncludesOpaqueBars = YES

因为默认是NO。我建议在你自定义navigationbar之后始终将它设置为NO,这样既能解决上述所述的问题,也能方便你在xib或者storyboard中的布局,如果使用默认值你会发现,在你自定义navigationbar的样式之后xib或者storyboard中的试图统统向下挪动了64,非常的蛋疼。

3.关于preferredStatusBarStyle不执行的问题。 
这个方法不执行,害的我花了一天的时间去解决,各个无果之后求助了stackoverfollow的大神在线帮助,一夜纠结之后有大神回复了这个问题,那就是因为没有给UIApplication设置rootViewController。我现在的工作属于二次开发,项目没有使用系统apple提供的导航控制器,自定义的导航控制也不从系统的继承而来,导致没有设置rootViewController,虽然控制台有警告信息,但是项目能够正常运行,所以一直没有注意这个问题,最终导致了preferredStatusBarStyle无法执行。虽然具体原因只有看过UIApplication的源代码才会清楚,但是我们看不到。所以遵循开发规则很重要,对每个一个黄色警告和控制台输出的警告信息一定要注意修复。说不定以后就会中招。

转载于:https://www.cnblogs.com/yjg2014/p/3987691.html

你可能感兴趣的文章
Window 常用命令
查看>>
SMTP协议学习笔记
查看>>
ubuntu18.04下安装eclipse jee
查看>>
在ASP.NET MVC中使用Web API和EntityFramework构建应用程序
查看>>
iOS OpenGL ES简单绘制三角形
查看>>
.NET Core 中正确使用 HttpClient 的姿势
查看>>
求子数组最大值
查看>>
谈谈tmpdir与innodb_tmpdir的区别和用处
查看>>
4.4---建立二叉树的链表
查看>>
从云原生看企业云的未来
查看>>
《高性能Linux服务器构建实战Ⅱ》热销中,附试读章节下载
查看>>
理解 RIPv1使用广播更新路由与RIPv2使用组播更新路由的区别
查看>>
linux svn服务器搭建、客户端操作、备份与恢复
查看>>
2017 未来架构师<设计思考> 翻转式课堂
查看>>
忘记管理员密码的补救办法
查看>>
PHP - 如何实现跨域
查看>>
PowerShell 多线程测试IP端口
查看>>
mysql表修复脚本
查看>>
实战mongodb3.06 Relica Sets+sharding集群
查看>>
关于自动化测试的思考
查看>>