要解決問題,首先要知道問題發(fā)生在哪里,這個問題是當(dāng)初剛工作在項目過階段評審的時候被設(shè)計提出來的,他說你看這導(dǎo)航欄下面怎么會有一像素的黑線,當(dāng)時真的是愣住了,甚至認(rèn)為這是一個蘋果的bug?,F(xiàn)在想想真的好幼稚。
首先我們看一下蘋果官方給出的解釋:

2E04731A-B0C8-4341-9B1D-D8FBB09B6484.png
現(xiàn)在讓我這個英語半吊子來翻譯一下,他的意思就是說如果你不調(diào)用這個方法設(shè)置一張背景圖片的話,那我就給你默認(rèn)一張,然后同時還有一張陰影圖片被默認(rèn)設(shè)置上去,好吧,這就是導(dǎo)航欄上1px黑線的由來,沒錯,就是這個蘋果贈送的shadowImage。

B6D352EE-F0C8-402C-B797-23405F232869.png
相信看到這個解釋即使不繼續(xù)說下去有些同學(xué)也知道解決辦法了吧,沒錯嘛,你就用上面說的那個方法,給設(shè)置一張背景圖片,然后在設(shè)置一張shadowImage就可以了,就像這樣:
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
為了一勞永逸,我把他寫在AppDelegate里面了。
下一個解決辦法,將UINavigationBar的clipsToBounds屬性設(shè)成YES就好啦,從此黑線去無蹤。
最后一個辦法,就是循環(huán)遍歷一下UINavigationBar的所有子視圖,發(fā)現(xiàn)有UIImageView類型的視圖就remove掉,或者設(shè)成隱藏狀態(tài)(hidden)。雖然也能達(dá)到想要的效果,但是感覺這個方法太暴力了,不是很推薦。
差不多就是這些了,應(yīng)該總有一款是適合你的。還是想再說一下,遇到問題不要搜到答案就感覺萬事大吉了,一定要弄清楚到底哪里出了問題。
感謝前進(jìn)的路上一直有你們,簡書上有愛的你們。