1. 程式人生 > >導航欄背景色修改&導航欄下面的橫線消除

導航欄背景色修改&導航欄下面的橫線消除

通常用的是此方法,來修改導航條的顏色

    self.navigationController.navigationBar.barTintColor = [Common hexStringToColor:@"47a8ef"];

那麼,問題是,實際上系統導航欄其實是半透明狀態的,顏色會有色差!
顏色會變的比平常的淡!!
我們只需要改變導航條的半透明狀態 — translucent屬性

 self.navigationController.navigationBar.translucent = NO;

這樣,導航條的顏色 就會和我們設定的需要顏色一樣

so,開始為這個設定 填上那些坑吧!!

以上設定之後,你會發現 你所畫的view / scrollview //等 怎麼又下移的64? 你會懷疑你之前設定的這行程式碼,

  self.automaticallyAdjustsScrollViewInsets = NO; //取消導航欄自動適應

是否未被新增,是否開啟或關閉
,然而,無論你怎麼設定這行程式碼,都不會產生效果,(還是空出64)

而如果你只是把你導航條下面的view//scrollview 的frame.origin.y 設定為0,(這樣可以解決)
但是! 那又讓你其他的frame一起要跟著變動!太麻煩了!

這時候,你需要這行程式碼;
設定一下自己view的初始位置

self.edgesForExtendedLayout = UIRectEdgeNone;

這樣填寫一下,導航條下面view 下移的問題就可以解決,同時,導航欄背景色的問題也得以解決, 還不需要修改你已經設定好的view的frame,
(ps: 這個時候,關閉不關閉導航欄的自動佈局已經無關緊要了,應為只要關閉了導航欄的透明屬性,self.automaticallyAdjustsScrollViewInsets = NO; 就會自動失效 )

導航欄下面還有條橫線呢??
在導航條顏色 以及下面是scrollview顏色終於一樣,位置終於接在一起之後,為啥還有條1xp不到的線欄在中間? 百度之後,也找到了一個合適的方法,方法不用多,夠用就好!

主要思路,
在導航條上尋找到這根1xp不到的線, 然後在view的生命週期裡,隱藏掉他們!!!!!!!

UIImageView *_lineVIew;
- (void)viewDidLoad {
    [super viewDidLoad];
    _lineVIew = [self findlineviw:self.navigationController.navigationBar];
    }
-(UIImageView*)findlineviw:(UIView*)view{

    if ([view isKindOfClass:[UIImageView class]]&&view.bounds.size.height<=1.0) {
        return (UIImageView*) view;
    }for (UIImageView *subview in view.subviews) {
        UIImageView *lineview = [self findlineviw:subview];
        if (lineview) {
            return lineview;
        }
    }
    return nil;

}
-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    _lineVIew.hidden = YES;
}
-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    _lineVIew.hidden = YES;
}
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    _lineVIew.hidden = YES;
}