34

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

self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent;

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

当 YES 时,导航栏以部分不透明度绘制,无论栏样式如何。不透明度的数量是固定的,不能更改。当导航栏由导航控制器对象管理时,可以设置此属性的值。

我试过了

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

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

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

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

谢谢,米

4

4 回答 4

50

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

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

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

于 2011-08-05T16:28:18.657 回答
17

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

self.navigationController.navigationBar.translucent = YES;
[(UIView*)[self.navigationController.navigationBar.subviews objectAtIndex:0] setAlpha:0.7f];
于 2012-09-12T13:42:13.417 回答
4

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

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

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

于 2013-02-25T21:34:54.000 回答
0

Here is the solution:

[[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;
于 2015-03-09T09:02:21.333 回答