我正在开发一款需要与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更改为iOS 7. 这不是识别何时是该应用程序在iOS 7中运行,因为我不希望该应用看起来像iOS 7,我希望它看起来与在iOS 6中看起来相同
提前致谢!
答案 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)
{
}