3

我正在开发一个需要与 iOS 7 兼容的 iOS 6 应用程序。我用它UIAppearance来设置应用程序某些组件的色调颜色,特别是UINavigationBar它及其 Bar Button 项目。

问题是当我在 iOS 7 设备上部署应用程序时,栏按钮项目的色调颜色被修改为导航栏的颜色。我了解 iOS 7UIAppearance在此(UINavigationBarXcode 4.6.3 中的 SDK 6 我无法使用该属性。

我已经尝试了很多东西,其中一些在某些情况下工作,但我仍然无法让它在整个应用程序中工作。有任何想法吗?

这是我遇到的问题的屏幕截图

在此处输入图像描述

编辑 1

为了设置应用程序的样式,我在AppDelegate

[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0]];
[[UIBarButtonItem appearance] setTintColor:[UIColor colorWithRed:230.0/255.0 green:0.0/255.0 blue:0.0/255.0 alpha:1.0]];

编辑 2

我尝试使用 SDK 7 和部署目标 5 从 Xcode 5 部署应用程序,但是当我将其部署在 iOS 7 设备上时,它会将我的 UI 更改为 iOS 7。这与识别应用程序何时在 iOS 中运行无关7因为我不希望应用看起来像 iOS 7,我希望它看起来和在 iOS 6 中看起来一样

提前致谢!

4

3 回答 3

2

您无需将自己限制在 iOS 6 SDK 上即可让您的应用程序在 iOS 6 上运行。您的应用程序将在其上运行的最低版本是使用“常规”选项卡中“部署信息”下的“部署目标”设置的。如果您将其设置为 iOS 6,但在 Build Settings 选项卡下将“Base SDK”设置为最新的 iOS,您将能够编写一个可以在其中任何一个上运行的应用程序。

完成后,您需要在运行时检查您需要的功能是否可用。所以你可能会做这样的事情:

UIColor *navigationBarColor = [UIColor redColor];
if ([self.navigationBar respondsToSelector:@selector(setBarTintColor:)])
{
    self.navigationBar.barTintColor = navigationBarColor;
}
else
{
    self.navigationBar.tintColor = navigationBarColor;
}
于 2013-10-29T12:40:07.503 回答
0
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) 
{


}
于 2013-10-29T12:48:05.293 回答
0

您可以在运行时确定您运行的是 iOS 6 还是 7,并在那时引入特定于操作系统的用户界面调整。

检查 iOS 7 或更早版本的最佳方法

具体来说,要检查 iOS 7 或更高版本:

#define IS_OS_7_OR_LATER    ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)

然后你可以检查:

if (IS_OS_7_OR_LATER) {
    // iOS 7 tweaks
} else {
    // iOS 6 tweaks
}
于 2013-10-29T12:36:51.490 回答