2014-01-12 57 views
0

我正在使用的应用程序具有自定义导航栏。在我的AppDelegate.m中,我做了以下操作:自定义导航栏,与iOS6的按钮兼容性问题

  • setBackgroundImage已将导航栏的默认颜色替换为我自己的.png图像之一;
  • setTitleTextAttributes:已被设置为白色;
  • setTintColor:已设置为白色;

    - (void)customizeUserInterface { 
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navBar"] forBarMetrics:UIBarMetricsDefault]; 
        [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName, nil]]; 
        [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; 
    } 
    

一切看起来都在iOS中7得很好,但在运行iOS 6中的导航栏按钮是白色的白,因为虽然色调的颜色变化的iOS 7的按钮上的文字设备(因为这就是所有按钮都在iOS 7中 - 文本),在iOS 6中设置色调颜色调整按钮的背景,并且文本保持白色。所以在iOS 6中,导航栏按钮是白色的,并带有白色文本。

我很喜欢我的表在iOS 7中的表现,而不是仅仅因为与iOS 6的向后兼容性不合作而改变它。

有没有人有解决这个问题。有没有办法以编程方式更改导航栏圆形记录按钮的背景颜色或只是圆形记录按钮中的文本 - 所有这些都不会改变iOS 7中的外观?

或者有办法有条件地设置这些更改吗?换句话说,我可以以编程方式将自定义导航栏设置为仅显示iOS 7+以上的设备,并且在此之前对所有iOS版本使用默认设置?

或者还有什么别的东西我没有想到呢?

谢谢!

+0

在customizeUserInterface方法中,我会推荐一个大的if/else if语句来测试设备的版本。如果是iOS 7,请执行此操作,但如果是iOS 6,请执行此操作。 – erdekhayser

回答

0

嘿,这是真的有可能以编程方式控制你的东西。你有你的方式来做到这一点ios7 &绝对你已经做了ios6。

这里是link来检查版本。

现在你可以有条件地做事情。

希望有所帮助。

+0

太好了,我懂了。谢谢! –