iOS 7中忽略了条形按钮项目的色调颜色

时间:2013-10-29 12:33:41

标签: ios objective-c ios6 ios7 uiappearance

我正在开发一款需要与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编译它,我无法使用该属性。

我尝试了很多东西,其中一些在某些情况下有效,但我还是无法在整个应用程序中使用它。有什么想法吗?

以下是我遇到的问题的屏幕截图

enter image description here

编辑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中看起来相同

提前致谢!

3 个答案:

答案 0 :(得分:2)

您不需要将自己限制在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;
}

答案 1 :(得分:0)

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

Best way to check for iOS 7 or earlier

具体来说,要检查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
}

答案 2 :(得分:0)

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) 
{


}