我应该怎么做才能使我的应用程序适应iOS 5.0,保持与iOS 4的兼容性

ari*_*mus 5 iphone objective-c ios ios5

我今天开始玩iOS 5了,我看到XCode 4.2只允许我选择iOS 5作为Base SDK而不是iOS 4.

到目前为止,我已经覆盖了UINavigationBar中的drawRect:方法来自定义其外观,但iOS 5不再调用该方法.现在我要使用[UINavigationBar外观]来做它(我认为这要好得多).但是,外观方法仅适用于iOS 5,因此如果我使用它,我的应用程序在iOS 4上执行时会崩溃.我该怎么办?我是否必须在每个使用iOS 5方法的地方检查iOS版本的宏?

谢谢,

阿里尔

Mar*_*off 16

您的第一个问题的答案是:您必须使用iOS5(或最新的iOS SDK)作为基本SDK,但您在部署目标下设置了受支持的最低iOS版本.在那里你可以设置iOS4.0(或任何你想要的).

处理第二个问题的正确方法是测试功能,而不是版本.所以,像这样的东西可以说,你的application:didFinishLaunchingWithOptions:方法:

// iOS5-only to customize the nav bar appearance
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) {
    UIImage *img = [UIImage imageNamed: @"NavBarBackground.png"];
    [[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
}
Run Code Online (Sandbox Code Playgroud)

然后,您将针对iOS5 SDK进行编译,因此appearance完全可以使用.但是当这个编译的代码在5之前的iOS版本上运行时,它会很好.

如前所述,您可以drawRect:按原样保留代码.