ios開發(fā)中經(jīng)常碰到各種需求,比如要求導(dǎo)航欄的顏色和self.view的顏色一樣,當我們直接設(shè)置navigationBar的顏色和view一樣時,我們會發(fā)現(xiàn)navigationBar還會有一條分割線留下,本文就是介紹怎么隱藏導(dǎo)航欄底部的分割線的。
第一種方法:不會影響導(dǎo)航欄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;
}
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated]; self.navigationImageView.hidden = YES;
}
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated]; self.navigationImageView.hidden = NO;
}
- 第二種方法:會刪除導(dǎo)航欄 translucent 半透明的顯示。
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navImage"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[UIImage new]];