【问题标题】:How can I make my navigation bar uniformly semi-transparent?如何使我的导航栏统一半透明?
【发布时间】:2013-09-16 06:06:52
【问题描述】:

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

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

这是我的代码:

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

这是我的问题的截图:http://grab.by/qiyU

【问题讨论】:

  • 您是否尝试将半透明设置为您的navigationBar

标签: objective-c cocoa uinavigationcontroller uinavigationbar ios7


【解决方案1】:

设置背景图片为nil,设置背景颜色为alpha。

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

【讨论】:

    【解决方案2】:

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

    但是您想创建一个半透明的导航栏。为此,据我所知,您必须创建一个 1 px 的大图像,其中包含具有 50% 不透明度的黑色。将此添加为导航栏的背景图像。

    这个 sn-p 应该可以解决问题:

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

    【讨论】:

      【解决方案3】:

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

      我遇到了一些奇怪的问题,状态栏似乎不受代码更改的影响,这为我解决了问题。

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

      【讨论】:

      • -1 不是我给的。不过我会删除我的评论。
      【解决方案4】:

      设置 alpha 值使其透明。

      [[UINavigationBar appearance] setAlpha:0.5f];
      

      【讨论】:

      • 这也会使子视图半透明。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 2015-08-16
      相关资源
      最近更新 更多