很遺憾, 只有iOS10才管用, 心累. 果然黑科技不靠譜.(17-10-26)
很久之前就開始打QQ的導(dǎo)航欄的主意, 這大概是我心中最完美的導(dǎo)航欄了. 百度過N多次也并沒有找到相關(guān)的實現(xiàn). QQ導(dǎo)航欄效果如下:
QQ導(dǎo)航欄.PNG
仔細觀察的話, UINavigationBar上面的titleView也是可以漸變的, 所以我想或許可以在原生的導(dǎo)航欄的基礎(chǔ)上做修改可以實現(xiàn)這樣的效果.
經(jīng)過艱苦奮斗最終實現(xiàn)效果如下:
最終實現(xiàn)效果.gif
不僅可以漸變, 而且每一個viewController的導(dǎo)航欄都可以單獨設(shè)置顏色??. 仔細觀察的話會發(fā)現(xiàn)原生導(dǎo)航欄和QQ的導(dǎo)航欄在titleView和返回按鈕的處理上是不一樣的, 我也是做出這個之后才發(fā)現(xiàn), 所以結(jié)論就是: QQ的導(dǎo)航欄是自定義的_.
關(guān)于我的實現(xiàn)方法并有什么可講的, 只是仔細研(cai)究(ce) 原生導(dǎo)航欄的組成以及層次, 上天保佑??, 剛好有我需要的并且成功找到了. 簡單來說就是黑科技. 比如這樣的代碼:
if ([view2 isKindOfClass:NSClassFromString(@"_UIVisualEffectBackdropView")]) {
view2.hidden = true;
}
這種依賴不穩(wěn)定細節(jié)的方法完全不值得學(xué)習(xí), 鬼知道蘋果工程師哪天不開心會悄悄給navigationBar那些沒有暴露的子view換一個類名.
所以寫這個文章其實就是想告訴大家: 我?的做出來啦!!!
最后是最最重要的代碼: https://github.com/Yanyinghenmei/GradientNavigationBar