我正在开发需要与iOS 7兼容的iOS 6应用程序。我使用UIAppearance在应用程序的某些组件上设置色调的样式,尤其是UINavigationBar及其Bar Button项。

问题是,当我在iOS 7设备上部署该应用程序时,条形按钮项的颜色会被修改为导航条的颜色。我知道iOS 7的UIAppearance在此(UINavigationBar)中进行了一些修改,并且如果我想在iOS 7中正确使用它,则应该设置barTintColor属性,但是,因为我的意思是将我的应用程序保留为iOS 6并且正在编译在Xcode 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更改为iOS7。这与识别应用程序何时在其中运行无关。 iOS 7 ,因为我不希望该应用看起来像iOS 7,我希望它看起来与iOS 6一样

提前致谢!

最佳答案

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

完成此操作后,您需要在运行时检查所需功能是否可用。因此,您可以执行以下操作:

UIColor *navigationBarColor = [UIColor redColor];
if ([self.navigationBar respondsToSelector:@selector(setBarTintColor:)])
{
    self.navigationBar.barTintColor = navigationBarColor;
}
else
{
    self.navigationBar.tintColor = navigationBarColor;
}

09-10 00:37
查看更多