iPhone X导航栏变矮了?navigationBar高度变了?答案是需要修改UINavigationBar+Awesome

Xcode 9 一出来,就想用最新的开发工具,公司网速还行,下载挺快的,没多久就下载好了,带着一点小激动的心情打开了工程,结果。。。尼玛


修改前效果:顶部导航栏navBar变矮了?

navigationBar白色背景怎么只有一半,下半部分变透明了,What the hell???
但是我在iPhone7上导航栏是没问题的,iPhone7无论是10.2的系统还是11.0系统,都正常啊。
对比一下iOS11.0下的iPhone7和iPhone X,顶部高度不一样,恍然大悟,我顶部导航栏本来就是透明的背景,只不过当初为了动态修改UINavigationBar的背景色,所以按照http://www.cocoachina.com/ios/20150409/11505.html这篇文章写了一个UINavigationBar的分类,实现了动态修改UINavigationBar的背景色的功能。原理是这样的:

  1. 首先[self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    [self setShadowImage:[UIImage new]];
    这样设置的效果是背景透明了,底部阴影的线条也透明了,整个UINavigationBar的背景都是透明的
  2. 在UINavigationBar 上添加一个UIView(命名overlay)
  3. 修改overlay的背景颜色

UINavigationBar+Awesome分类通过上面的方式动态修改UINavigationBar的背景色,这方案本身没问题,问题是创建overlay时候,高度写成了UINavigationBar高度加20pt,这就造成了overlay的高度为44+20的高度,而在iPhone X上对应的应该是88pt。
所以必须修改一下,不能写成UINavigationBar高度+20pt,也不能直接固定写64,而应该这么写:UINavigationBar高度+[UIApplication sharedApplication].statusBarFrame.size.height

现在看一下效果:

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

相关阅读更多精彩内容

  • iOS中UIViewController对象如果通过push方式呈现,是由UINavigationControll...
    BladeWayne阅读 59,814评论 37 79
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,745评论 4 61
  • svn# spalsh界面的作用# 代码包结构划分方式# spalsh界面搭建# (重点) 获取版本号# (重点)...
    SmNiuhe阅读 5,353评论 0 1
  • 最近看了腾讯视频中的一部电影《拆弹专家》,电影中的“猪脚”章在山(刘德华饰),香港警察爆炸处理科的一名高级督察,成...
    持续行动派阅读 2,383评论 0 0
  • “本文参加#青春不一YOUNG#征稿活动,本人承诺,文章内容为原创,且未在其他平台发表过。” 一 闺蜜小娟打电话说...
    艾默儿阅读 3,157评论 0 0

友情链接更多精彩内容