ios statusbar背景透明能看到下层view的数据

如题
ios8.2
用一个navigationController包住一个tableViewController
然后设置了navbar背景

- (void)viewDidLoad {
    [super viewDidLoad];
    //navbar背景
    UINavigationBar *navBar = [UINavigationBar appearance];
    [navBar setBackgroundColor:MCOLOR(COLOR_GLOBAL_B2)];
    //去除边框
    [self.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
    [self.navigationBar setShadowImage:[[UIImage alloc] init]];
    //title样式
    [self.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:20], NSFontAttributeName, MCOLOR(@"gray"), NSForegroundColorAttributeName, nil]];
}

显示的效果如下
图片描述
求解决!

阅读 9.2k
2 个回答
- (void)viewDidLoad {
    [super viewDidLoad];
    //navbar背景
    UINavigationBar *navBar = [UINavigationBar appearance]; //删除
    [navBar setBackgroundColor:MCOLOR(COLOR_GLOBAL_B2)];    //删除
    //去除边框
    [self.navigationBar setBackgroundImage:[[UIImage alloc] init] // 删除 forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
    [self.navigationBar setShadowImage:[[UIImage alloc] init]];
    //title样式
    [self.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:20], NSFontAttributeName, MCOLOR(@"gray"), NSForegroundColorAttributeName, nil]];

    //添加这一行
    [self.navigationBar setBarTintColor:MCOLOR(COLOR_GLOBAL_B2)];
}

原因出在你设置了 [navBar setBackgroundColor:MCOLOR(COLOR_GLOBAL_B2)];
不要设置navigationBar的背景色就好了。
但是你这样效果就会全透明,你的UIImage没有赋值图片,navigationbar就会全透明,效果如图

建议应该最好是半透明的毛玻璃效果最好,很多应用都是这种效果。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题