33

我偶然发现了很多次,从未找到解决方案。 一个UINavigationController的的导航栏可以设置为黑色半透明状:改变半透明黑色的颜色UINavigationBar

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent; 

此外,还有在UINavigationBar的半透明特性,文档说:

如果是,导航栏画有部分不透明,不管 的酒吧风格。不透明度的数量是固定的,不能更改为 。当导航控制器对象管理 导航栏时,可以设置此属性的值。

我试图

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

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

难道真的有可能来一个半透明UINavigationBar的颜色改变的东西比黑色(最好在一个UINavigationController)不同?

我希望有一个审查安全的解决方案。

感谢,男

回答

50

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

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

translucent属性似乎只是为了确定羯羊主视图应该是导航栏下可见,并调整视图appropiately。

+0

+1,这对我的作品。 – SmallChess

+1

+1它与MonoTouch大致相同 –

+9

我注意到的副作用是它改变了整个导航条的alpha(不仅仅是背景)。具体来说,标题不是“明亮”的白色,但似乎也是0.7f阿尔法。 – bobtheowl2

17

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

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

它为我工作。我更喜欢这个解决方案。 – Ali

4

至少在iOS 4在iPhone 4S上,您可以制作如下所示的彩色半透明导航栏:

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

alpha设置似乎不再必要。这也使我的标题变得明亮,而我的按钮不透明。

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;