1. 程式人生 > >iOS之旅--隱藏(去除)導航欄底部橫線

iOS之旅--隱藏(去除)導航欄底部橫線

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(半透明)

總體來說,第二種辦法還是很好地,建議大家使用第二種辦法。