以编程方式检测iPad是否具有Retina显示屏?

我如何以编程方式(Objective-C)iPad是否具有Retina显示屏?

 if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && [[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [UIScreen mainScreen].scale > 1) { // new iPad } 

正如其他海报已经回答,你应该检查function,而不是模型。 但是,在您可能想要识别某个特定模型的less数难以理解的情况下,可以按如下所示使用hw.machine sysctrl。 请注意,如果您无法识别模型,那很可能是因为您的代码正在运行新模型,所以在这种情况下您应该做一些明智的事情。

 #include <sys/types.h> #include <sys/sysctl.h> // Determine the machine name, eg "iPhone1,1". size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); // Get size of data to be returned. char *name = malloc(size); sysctlbyname("hw.machine", name, &size, NULL, 0); NSString *machine = [NSString stringWithCString:name encoding:NSASCIIStringEncoding]; free(name); 

现在你可以比较“机器”与已知的值。 例如,检测iPad(2012年3月)型号:

 if ([machine hasPrefix:@"iPad3,"]) NSLog(@"iPad (March 2012) detected");