改变半透明黑色UINavigationBar的颜色

时间:2011-07-21 19:16:50

标签: uinavigationcontroller uinavigationbar uicolor translucency

我多次偶然发现,从未找到解决方案。 UINavigationController的navigationBar可以设置为黑色半透明,如:

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;

此外,UINavigationBar中有一个半透明的属性,文档说:

  

如果是,则无论如何都会使用部分不透明度绘制导航栏   酒吧风格。不透明度是固定的,不可以   改变。当允许设置此属性的值时   导航栏由导航控制器对象管理。

我试过

self.navigationcontroller.navigationBar.tintColor=[UIColor blueColor];
self.navigationcontroller.navigationBar.translucent=YES;

和千种变化:首先设置半透明属性,在AppDelegate和ViewController中设置它,首先设置barstyle。 结果总是一样的:没有透明度。因此我的问题是:

是否真的可以将半透明的UINavigationBar的颜色更改为不同于黑色的颜色(最好是在UINavigationController中)?。

我希望有一个可以审核的安全解决方案。

谢谢,m

4 个答案:

答案 0 :(得分:50)

一旦你知道,它就相当简单了:

self.navigationController.navigationBar.tintColor = [UIColor blueColor];
self.navigationController.navigationBar.alpha = 0.7f;
self.navigationController.navigationBar.translucent = YES;

translucent属性似乎只是确定主视图应该在导航栏下可见,并且适当地调整视图大小。

答案 1 :(得分:17)

为了更准确地模仿半透明效果,意味着只有导航栏的背景是半透明的,按钮,标题和其他所有内容都是不透明的,你可以这样做:

self.navigationController.navigationBar.translucent = YES;
[(UIView*)[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0.7f];

答案 2 :(得分:4)

至少在iPhone 4S的iOS 6中,您可以制作这样的彩色半透明导航栏:

self.navigationController.navigationBar.tintColor = [UIColor blueColor];
self.navigationController.navigationBar.translucent = YES;

似乎不再需要alpha设置。这也使我的标题亮白,我的按钮不透明。

答案 3 :(得分:0)

以下是解决方案:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:3.f/255.f green:8.f/255.f blue:61.f/255.f alpha:1]];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.barTintColor = [UINavigationBar appearance].barTintColor;