導航欄背景色修改&導航欄下面的橫線消除
阿新 • • 發佈:2019-02-02
通常用的是此方法,來修改導航條的顏色
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;
}