ios開發中經常碰到各種需求,比如要求導航欄的顏色和self.view的顏色一樣,當我們直接設置navigationBar的顏色和view一樣時,我們會發現navigationBar還會有一條分割線留下,本文就是介紹怎么隱藏導航欄底部的分割線的。
第一種方法:不會影響導航欄translucent 半透明的顯示
首先在viewDidLoad 定義一個 UIImageView *navigationImageView 來存儲底部分割線。
UIImageView *navigationImageView = [self findHairlineImageViewUnder:self.navigationController.navigationBar];
self.navigationImageView = navigationImageView;
找到導航欄底部的橫線
-(UIImageView *)findHairlineImageViewUnder:(UIView *)view { if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) { return (UIImageView *)view; } for (UIView *subview in view.subviews) { UIImageView *imageView = [self findHairlineImageViewUnder:subview]; if (imageView) { return imageView; } } return nil; }
在viewWillAppear隱藏分割線,在viewDidDisappear中顯示分割線
-(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.navigationImageView.hidden = YES; } -(void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; self.navigationImageView.hidden = NO; }
第二種方法:會刪除導航欄 translucent 半透明的顯示。
// @"navImage" 導航欄的顏色 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navImage"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[UIImage new]];
-------------------------------------
想要了解更多的做法請訪問http://www.4byte.cn/question/448208/how-to-hide-ios7-uinavigationbar-1px-bottom-line.html