Xcode 9 一出來,就想用最新的開發(fā)工具,公司網(wǎng)速還行,下載挺快的,沒多久就下載好了,帶著一點(diǎn)小激動(dòng)的心情打開了工程,結(jié)果。。。尼瑪

navigationBar白色背景怎么只有一半,下半部分變透明了,What the hell???
但是我在iPhone7上導(dǎo)航欄是沒問題的,iPhone7無論是10.2的系統(tǒng)還是11.0系統(tǒng),都正常啊。
對(duì)比一下iOS11.0下的iPhone7和iPhone X,頂部高度不一樣,恍然大悟,我頂部導(dǎo)航欄本來就是透明的背景,只不過當(dāng)初為了動(dòng)態(tài)修改UINavigationBar的背景色,所以按照http://www.cocoachina.com/ios/20150409/11505.html這篇文章寫了一個(gè)UINavigationBar的分類,實(shí)現(xiàn)了動(dòng)態(tài)修改UINavigationBar的背景色的功能。原理是這樣的:
- 首先[self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self setShadowImage:[UIImage new]];
這樣設(shè)置的效果是背景透明了,底部陰影的線條也透明了,整個(gè)UINavigationBar的背景都是透明的 - 在UINavigationBar 上添加一個(gè)UIView(命名overlay)
- 修改overlay的背景顏色
UINavigationBar+Awesome分類通過上面的方式動(dòng)態(tài)修改UINavigationBar的背景色,這方案本身沒問題,問題是創(chuàng)建overlay時(shí)候,高度寫成了UINavigationBar高度加20pt,這就造成了overlay的高度為44+20的高度,而在iPhone X上對(duì)應(yīng)的應(yīng)該是88pt。
所以必須修改一下,不能寫成UINavigationBar高度+20pt,也不能直接固定寫64,而應(yīng)該這么寫:UINavigationBar高度+[UIApplication sharedApplication].statusBarFrame.size.height
現(xiàn)在看一下效果:
