0

我在我的应用程序中使用情节提要,情节提要需要 iOS 5。

当 iOS 4 设备打开我的应用程序时发生了什么?

我可以将代码放入 iOS 4 设备的 viewDidLoad 中吗?

我想为 iOS 4 创建一个特定的视图,上面写着“需要 iOS 5”这可能吗?

我可以使用这样的东西来检查设备是否运行 iOS 4 或更低版本?:

BOOL iOS4 = [[[UIDevice currentDevice] systemVersion] floatValue] <= 5.0;

我可以把这样的东西放进去viewDidLoad吗?

if(iOS4) {
    // i´m changing view to my "iOS 5 Required" view (XIB File)
}

我没有 iOS 4 设备,这可以吗?

4

3 回答 3

1

您可以检查 iOS 的版本是否支持故事板:

if(NSClassFromString(@"UIStoryboard")) {
    //iOS is supporting storyboards (iOS >= 5.0)

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];  

   //use your storyboard
}else{
    //iOS is not supporting storyboards
    //load viewcontrollers from nib
}

但是,我认为 Apple 不会喜欢这个想法。他们可能会因此拒绝您的应用程序。如果指南中的某些部分告诉您不要这样做,我并不感到惊讶。

于 2012-12-29T19:53:54.717 回答
0

您可以使用以下方式获取操作系统版本:

[[UIDevice currentDevice] systemVersion]

但是,您应该避免依赖版本字符串作为设备或操作系统功能的指示。通常有一种更可靠的方法来检查特定功能或类是否可用。例如,您可以使用 NSClassFromString 检查 UIPopoverController 在当前设备上是否可用:

if(NSClassFromString(@"UIPopoverController")) {
    // Do something
}

一些类,如 CLLocationManager 和 UIDevice,提供了检查设备功能的方法:

if([CLLocationManager headingAvailable]) {
    // Do something
}

Apple 在他们的 GLSprite 示例代码中使用 systemVersion,所以我的建议不能是绝对的:

// A system version of 3.1 or greater is required to use CADisplayLink. The NSTimer
// class is used as fallback when it isn't available.
NSString *reqSysVer = @"3.1";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
    displayLinkSupported = TRUE;

如果 currSysVer 不高于 reqSysVer,只需执行 else 语句,自动呈现一个新的 modalViewController,上面写着“需要 iOS 5”

于 2012-12-29T19:44:37.873 回答
0

当它需要故事板时,该应用程序将无法在 ios4 下安装......
除非您真的想要它,否则它会显示在应用程序商店中

于 2012-12-29T18:51:11.960 回答