UINavigationBar 相关问题

本文主要解决一些几个问题

1.第一个问题: 解决导航栏设置颜色后色值变化问题
2.第二个问题: 去掉导航栏下面的哪条线
3.第三个问题:修改状态栏颜色

第一个问题: 解决导航栏设置颜色后色值变化问题

问题描述:

如下图所示,导航栏和下面的View采用的是同一个色值,但是导航栏上出来的效果跟美工设计的效果有差别


UINavigationBar 相关问题_第1张图片
屏幕快照 2017-08-31 09.25.27.png
解决办法:

这个愿意是由于ios7 以上导航栏默认透明导致的,可以去掉导航栏透明度
在APPdelegate里面全局去掉

[UINavigationBar appearance].translucent = NO;

或者某一个页面去掉

self.navigationController.navigationBar.translucent = NO;
第二个问题: 去掉导航栏下面的哪条线
UINavigationBar 相关问题_第2张图片
屏幕快照 2017-08-31 09.40.02.png

产生原因: 是由于苹果默认有shadowImage 导致
解决办法:
在APPdelegate里面全局去掉

//    [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
//    [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];

或者在具体的某一个页面去掉

//    [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
//    [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
第三个问题:修改状态栏颜色
- (void)setStatusBarBackgroundColor:(UIColor *)color {
    
    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];
    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {
        statusBar.backgroundColor = color;
    }
}

你可能感兴趣的:(UINavigationBar 相关问题)