iOS開發大部分情況下會使用到導航欄,由於我司的app導航欄需要與下麵緊挨著的視窗顏色一致,導航欄底部的橫線就會影響這個美觀,LZ使用了以下方法。覺得不錯,分享來給小伙伴們。1)聲明UIImageView變數,存儲底部橫線@interface MyViewController { UIImag...
iOS開發大部分情況下會使用到導航欄,由於我司的app導航欄需要與下麵緊挨著的視窗顏色一致,導航欄底部的橫線就會影響這個美觀,LZ使用了以下方法。覺得不錯,分享來給小伙伴們。
1)聲明UIImageView變數,存儲底部橫線
@interface MyViewController {
UIImageView *navBarHairlineImageView;
}
- 1
- 2
- 3
2)在viewDidLoad中加入:
navBarHairlineImageView = [self findHairlineImageViewUnder:self.navigationController.navigationBar];
- 1
3)實現找出底部橫線的函數
- (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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4)最後在viewWillAppear,viewWillDisappear中處理
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
navBarHairlineImageView.hidden = YES;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
navBarHairlineImageView.hidden = NO;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
上面使用了一種個人比較喜歡的方法,
下麵來一個最簡單的:
的。
UINavigationBar *navigationBar = self.navigationController.navigationBar;
// bg.png為自己ps出來的想要的背景顏色。
[navigationBar setBackgroundImage:[UIImage imageNamed:@"bg.png"]
forBarPosition:UIBarPositionAny
barMetrics:UIBarMetricsDefault];
[navigationBar setShadowImage:[UIImage new]];
- 1
- 2
- 3
- 4
- 5
- 6
這是唯一一個隱藏這條線的官方用法,但是有一個缺陷-刪除了translucency(半透明)
總體來說,第二種辦法還是很好地,建議大家使用第二種辦法。