在我的应用程序中,我将导航栏设置为深蓝色。
iOS6中新的渐变效果使导航栏显得更亮(请参见下文)。

如果我将颜色调整为较暗以补偿iOS6,则它在iOS5中会显得太暗。

是使它们看起来相同(或几乎相同)的最佳方法是什么?

检测操作系统版本并设置不同的颜色?使用背景图片?还是可以使用样式设置来更改渐变行为?

最佳答案

实现此目的的一种方法是使用背景图像,并使用iOS 5.0中引入的外观代理进行设置。

如果您创建的图像是垂直的薄切片(例如,宽度为1像素,高度为44像素以及视网膜图像加倍)并将其添加到捆绑包中,则可以为您的所有导航栏设置导航栏背景图像应用程序一次使用以下方法:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBarImage"] forBarMetrics:UIBarMetricsDefault];

如果您在应用启动时运行该行代码,例如在您的appDelegate的以下方法中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

然后,应用程序中的每个navigationBar都将看起来相同。使用这样的映像的优点是,无论操作系统版本和将来可能会发生或可能不会发生的任何更改,您的应用程序始终看起来相同。

请注意,Appearance代理API仅在iOS 5.0中添加,因此它不适用于旧版本的iOS。要获得外观代理的良好概述,我建议您观看WWDC 2011视频Session 114。

关于objective-c - 如何调整UINavigationBar tintColor以补偿iOS6中的新渐变效果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12519789/

10-15 15:29