了解设备类型 - 视网膜/非视网膜

时间:2011-04-06 15:28:22

标签: iphone objective-c cocoa-touch ios

  

可能重复:
  Detect Retina Display

我们怎么知道设备是否有来自客观C代码的视网膜显示?

3 个答案:

答案 0 :(得分:56)

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
    && [[UIScreen mainScreen] scale] >= 2.0) {
    // Retina
} else {
    // Not Retina
}

答案 1 :(得分:5)

您可以查看scale上的[UIScreen mainScreen]属性,如果您在视网膜上运行是2.0,如果是1.0则不是。您还可以从当前的CoreGraphics Context获得比例。

答案 2 :(得分:-1)

我认为你不能直接确定。您必须从可以从sysctlbyname获取的模型信息中推断出它(请参阅iOS手册页)。例如:

sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);

会给你一个字符串,如“iPhone3,1”,它有一个视网膜显示,或“iPhone 2,1”没有。