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]];
}

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

uinavigationcontroller ios uinavigationbar

但愿有天堂 9 years, 5 months ago

 - (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)];
}

河蟹你内流满面 answered 9 years, 5 months ago

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

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

盗光者卡斯托尔 answered 9 years, 5 months ago

Your Answer