iPhone X导航栏变矮了?navigationBar高度变了
2017-09-23 本文已影响0人
ayong_2017
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的背景色的功能。原理是这样的:
- 首先[self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self setShadowImage:[UIImage new]];
这样设置的效果是背景透明了,底部阴影的线条也透明了,整个UINavigationBar的背景都是透明的 - 在UINavigationBar 上添加一个UIView(命名overlay)
- 修改overlay的背景颜色
UINavigationBar+Awesome分类通过上面的方式动态修改UINavigationBar的背景色,这方案本身没问题,问题是创建overlay时候,高度写成了UINavigationBar高度加20pt,这就造成了overlay的高度为44+20的高度,而在iPhone X上对应的应该是88pt。
所以必须修改一下,不能写成UINavigationBar高度+20pt,也不能直接固定写64,而应该这么写:UINavigationBar高度+[UIApplication sharedApplication].statusBarFrame.size.height
现在看一下效果: