如何使导航栏均匀半透明?

时间:2013-09-16 06:06:52

标签: objective-c cocoa uinavigationcontroller uinavigationbar ios7

我正在iOS 7上编写一个应用程序,我似乎无法处理navigationBar和工具栏的透明度,如何将导航栏设置为50%不透明度的黑色?

我已经阅读了向ios7指南的过渡,并且我已经观看了wwdc13讲座214,但我的状态栏仍然具有与附加导航栏的其余部分不同的透明度。

这是我的代码:

// APP-WIDE THEMING
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackOpaque];
[[UINavigationBar appearance] setBackgroundColor:[UIColor blueColor]];  
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

以下是我的问题的屏幕截图:http://grab.by/qiyU

4 个答案:

答案 0 :(得分:7)

将背景图像设置为nil,并使用alpha设置背景颜色。

[ctrl.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
ctrl.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:0 Green:0 Blue:0 Alpha:.5];

答案 1 :(得分:0)

根据此处发布的答案,可以创建透明的UINavigationBar: How to draw a transparent UIToolbar or UINavigationBar in iOS7

但是,您想要创建一个半透明导航栏。为此,据我所知,你必须创建一个包含黑色和50%不透明度的1像素大图像。将其添加为导航栏的backgroundimage。

这个片段应该可以解决问题:

[[UINavigationBar appearance] setBarStyle:UIBarStyleDefault];
UIImage* sti = [UIImage imageNamed:@"EMT_SemiTransparent.png"];
[[UINavigationBar appearance] setBackgroundImage:sti forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundColor:UIColor.clearColor];

答案 2 :(得分:-1)

尝试在pList文件中将键[查看基于控制器的状态栏外观]设置为NO。

我遇到了一些状态栏似乎并没有受到代码更改影响的困境,这为我解决了这个问题。

参考:https://stackoverflow.com/a/18184831/2962193

答案 3 :(得分:-2)

设置alpha值使其透明。

[[UINavigationBar appearance] setAlpha:0.5f];