如何在iOS 7中使导航栏透明?

18

有没有办法使导航控制器的栏完全透明?

我尝试过的方法:

[self.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]];
[self.navigationController.navigationBar setBarTintColor:[UIColor clearColor]];
[self.navigationController.navigationBar setAlpha:0.0];

但是工具栏的外观不会改变,保持白色半透明。我想让工具栏中的项目可见,但不是工具栏本身。有人可以指点我正确的方向吗?谢谢。


2
这个问题在这里得到了解答:https://dev59.com/E2Mk5IYBdhLWcg3wyw0U - gagarwal
2个回答

68

如果有人想知道如何在iOS 7中实现这一点,这里有一个解决方案(也兼容iOS 6)

[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;

在导航栏上将translucent属性设置为YES就可以了,这是因为在UINavigationBar文档中讨论的一种行为。以下是相关片段:

如果您在具有不透明自定义背景图像的导航栏上将此属性设置为YES,则导航栏将对图像应用小于1.0的系统不透明度。

来源参考:使UINavigationBar透明


我尝试了这个,它可以工作,但现在返回按钮不可见了,有什么解决办法吗? - nuteron
@nuteron 你可以尝试使用以下代码,它可能会对你有所帮助: self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; - Pradhyuman sinh
@Pradhyumansinh 谢谢你的解决方案。在将bar设置为半透明后,我想恢复默认背景。我该怎么做?http://stackoverflow.com/questions/24298375/revert-navigation-bars-background-image-to-default - Han Pengbo

22

你可以使用以下代码使导航栏透明化


[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self.navigationBar setShadowImage:[UIImage new]];
[self.navigationBar setTranslucent:YES];

如果我们这样做,能否设置导航栏的透明度? - Q.u.a.n.g L.
当然可以,您可以通过 [self.navigationBar setAlpha:YourValue]; 来实现。 - Haresh Ghatala
1
@HareshGhatala 谢谢你的解决方案。在将 bar 设置为半透明后,我想恢复默认背景。我该怎么做?stackoverflow.com/questions/24298375/… - nimingzhe2008 5 分钟前 编辑 - Han Pengbo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接