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