【问题标题】:iOS7 navigationBar and TabBar Color is behaving strangelyiOS7 navigationBar 和 TabBar 颜色表现异常
【发布时间】:2013-10-17 20:11:09
【问题描述】:

这就是我想要的。它加载到我的一些视图控制器上。

大家好,

我试图让我所有的 viewControllers 的色调都一样,我快疯了。有些看起来比其他的要暗得多。我想要的只是整个过程中的浅色......

有时我会得到这种丑陋的深灰色......我不确定我做错了什么。我已经检查了 .m 文件并且没有设置色调颜色或任何东西......不知道为什么它在每个 viewController 上都不一致......

任何帮助都会很棒。谢谢!

【问题讨论】:

  • UINavigationBar 的某些属性的行为已从 iOS 7 更改。我已经在我的Answer详细解释了。

标签: iphone ios objective-c ios7


【解决方案1】:

在 iOS7 导航栏中默认为 translucent=YES,所以只需更改为 NO,如下所示:-

self.navigationController.navigationBar.translucent=NO;

并设置Navigaitonbar颜色或其他属性自定义,如Bellow将此代码放入Appdelegate类didFinishLaunchingWithOptions并使用appearance进行全局应用:-

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {

    // Load resources for iOS 6.1 or earlier
     [[UINavigationBar appearance]setTintColor:NavigationColor];
} else {
     [[UINavigationBar appearance]setTintColor:[UIColor whiteColor]]; // it set color of bar button item text
     [[UINavigationBar appearance]setBarTintColor:[UIColor GreenColor]]; // it set color of navigation
     [[UINavigationBar appearance] setBarStyle:UIBarStyleDefault]; // it set Style of UINavigationBar
     [[UINavigationBar appearance]setTitleTextAttributes:@{UITextAttributeTextColor : [UIColor whiteColor]}]; //It set title color of Navigation Bar
    // Load resources for iOS 7 or later

}

对于 tabBar 也一样,默认情况下 translucent=YES 更改为 NO

[self.tabBarController.tabBar setTranslucent:NO];

【讨论】:

  • 谢谢!好的,如果我将它放在我的 viewDidLoad 方法中似乎可以工作,但为什么我不能改变颜色?我把self.navigationController.navigationBar.translucent=NO;放在viewDidLoad方法中,但是我想把颜色改成blueColor。我的目标是ios7
  • 在应用委托类 [[UINavigationBar appearance]setBarTintColor:[UIColor blueColor]]; 或 viewDidLoad self.navigationController.navigationBar setBarTintColor:[UIColor blueColor]] ;
  • 是的标签栏相同,默认为半透明=YES 更改为 NO
  • 使用外观所以不需要在viewDidLoad的每个类中放代码方法看看我更新的答案。
【解决方案2】:

从 iOS 7.1 开始存在一个错误,导致 UITabBar 无法监听 Global Tint。

看到这个帖子:https://stackoverflow.com/a/22323786/1255674

您需要以编程方式设置色调。谢谢,艾夫...

【讨论】:

    【解决方案3】:

    一个常见的错误是将 View Controller 的 view.backgroundColor 设置为 clearColor(以编程方式或通过 Storyboard)。这使得视图实际上变为黑色(因为清晰视图下方没有任何内容),因此该视图上方的所有内容,translucent 属性设置为YES,将显示深灰色(黑色 + 默认 iOS 模糊) .

    要解决此问题,请将translucent 属性设置为NO(如Nitin Gohel 所说),或将view.backgroundColor 设置为白色,这是它的实际默认颜色。

    希望这仍然可以帮助某人!

    【讨论】:

      猜你喜欢
      • 2022-11-03
      • 2020-12-26
      • 2017-06-14
      • 2013-10-06
      • 2015-10-15
      • 2012-06-03
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      相关资源
      最近更新 更多