在我的导航栏 iOS 7 中设置色调/半透明级别的问题

Posted

技术标签:

【中文标题】在我的导航栏 iOS 7 中设置色调/半透明级别的问题【英文标题】:issue setting the tint / translucency level in my navigation bar iOS 7 【发布时间】:2014-07-14 21:48:47 【问题描述】:

我正在尝试为我的视图制作一个漂亮的半透明深色导航栏。背景图像是漂亮的黑白,所以应用程序中的自动半透明应该足够了,但是当我运行应用程序时,我得到一个几乎 100% 不透明的白色导航栏。

我已经查看了网站上的许多问题,并尝试了许多提供的答案,但没有运气,我看过这个:

Achieving bright, vivid colors for an ios 7 translucent UINavigationBar'

还有这个

http://www.appcoda.com/customize-navigation-status-bar-ios-7/

但是我仍然没有得到我正在寻找的解决方案,我得到的关闭是当视图最初出现时它具有正确的级别,一旦 segue 结束,导航栏就会变得完全不透明。这是我现在正在尝试使用的代码:

 self.navigationController.navigationBar.alpha= .8f;
    self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
    self.navigationController.navigationBar.translucent = YES;

这是我得到的结果:

奇怪的是,正如我在 segue 呈现视图时提到的那样,导航栏有一个外观,而当它完全呈现时,它具有完全不同的外观,请看图片:

这是在视图完全加载之前:

这是在它完全加载之后:

非常感谢您的帮助,谢谢。

编辑:我尝试了以下代码但没有成功:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    
      // Override point for customization after application launch.

      [[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];

      return YES;
    

【问题讨论】:

【参考方案1】:

如果您希望应用程序中的所有导航栏都使用这种样式,那么我建议您通过外观代理设置导航栏样式。

在您的 AppDelegate.m(或任何您的应用委托文件)中,将 didFinishLaunchingWithOptions: 方法替换为下面的方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    
      // Override point for customization after application launch.

      [[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];

      return YES;
    

对通常的半透明条使用 UIBarStyleDefault。

试试这个,告诉我它是否有效

【讨论】:

@vzm 另外,我注意到在您发布的代码中,您的第二行有 self.navigationController.navigationBar.tintColor = [UIColor blackColor];。这只会设置 nag bar 上的东西的颜色,而不是 bar 本身。要设置导航栏的颜色,请使用self.navigationController.navigationBar.barTintColor = <whatever colour you want>; 谢谢,这实际上是我的一个错字;) 据我所知,Apple 并不真正希望您更改导航栏的 alpha。但是有一些解决方法。这是一个类似的问题,可能会有所帮助。 Similar Question【参考方案2】:

我相信这是自 iOS 7.0.3 以来的一个问题。试试这个。使用之前使用的颜色,但设置 alpha = 0.67。

UIColor * navColor = ...; self.navigationBar.barTintColor = [navColor colorWithAlphaComponent:0.67];

【讨论】:

以上是关于在我的导航栏 iOS 7 中设置色调/半透明级别的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViews 中设置导航栏半透明以启动动画

ios7 - 故事板 - 无法在我的视图控制器中设置导航栏

iOS 7 半透明标签栏和导航栏

ios 7 半透明+彩色导航栏

使用 react-native 在 iOS 中设置半透明状态栏

导航栏 Alpha 值未在 iOS 7 中设置