我该如何用编程方式(Objective-C)判断 iPad 是否具有 Retina 显示屏?
我该如何用编程方式(Objective-C)判断 iPad 是否具有 Retina 显示屏?
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && [[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [UIScreen mainScreen].scale > 1)
{
// new iPad
}
正如其他回答中提到的,您应该检查功能而不是型号。但是,在极少数需要识别特定型号的模糊情况下,您可以使用hw.machine sysctrl,如下所示。请注意,如果无法识别型号,则最有可能是因为您的代码正在新型号上运行,因此在这种情况下应该采取一些明智的措施。
#include <sys/types.h>
#include <sys/sysctl.h>
// Determine the machine name, e.g. "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);
if ([machine hasPrefix:@"iPad3,"]) NSLog(@"iPad (March 2012) detected");
@2x
版本即可,但你的代码不会改变,只需添加新的图片文件即可。 - sch