推薦兩篇文章 https://my.oschina.net/sayonala/blog/511490
http://www.reibang.com/p/c26f1e36263f
第一篇使用runtime解決? 本文附上oc和swift 解決方法
需要將上圖中的那條線隱藏掉? 遍歷self.navigationController.navigationBar.subviews
并不能隱藏掉它? 然后看層 百科? 它是屬于上層的 _UIBarBackground 的(注意前面的下劃線不要丟) 所以就變成隱藏_UIBarBackground
這個東西了 上代碼:
oc方法
for (UIView? * v in self.navigationController.navigationBar.subviews){
UIView? * bgview=nil;
NSString * classname = NSStringFromClass([v class]);
if ([classname isEqualToString:@"_UINavigationBarBackground"] || [classname isEqualToString:@"UINavigationBarBackground"])
{
bgview=v;
break;
} else if ([classname isEqualToString:@"_UIBarBackground"]) {
bgview = v;
for (UIView *vi in v.subviews) {
// 適配iOS10
NSString *viName = NSStringFromClass([vi class]);
if ([viName isEqualToString:@"UIImageView"]) {
vi.hidden = YES;
break;
}
}
}
}
swift? 方法
?privatefuncremoveNavLine() {
? ? ? ? for v in (self.navigationController?.navigationBar.subviews)!{
? ? ? ? ? ? varbgview :UIView? =nil
? ? ? ? ? ? letclassName =NSStringFromClass(v.classForCoder)
? ? ? ? ? ? if className.elementsEqual("_UINavigationBarBackground") || className.elementsEqual("UINavigationBarBackground"){
? ? ? ? ? ? ? ? bgview = v
? ? ? ? ? ? ? ? break
? ? ? ? ? ? }elseifclassName.elementsEqual("_UIBarBackground"){
? ? ? ? ? ? ? ? bgview = v
? ? ? ? ? ? ? ? forviinv.subviews{
? ? ? ? ? ? ? ? ? ? letviname =NSStringFromClass(vi.classForCoder)
? ? ? ? ? ? ? ? ? ? ifviname.elementsEqual("UIImageView"){
? ? ? ? ? ? ? ? ? ? ? ? vi.isHidden=true
? ? ? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }