iOS navigationBar導航欄底部與self.view的分界線的隱藏


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM