【问题标题】:How to check if an iOS device is a retina display iPod touch?如何检查 iOS 设备是否是视网膜显示器 iPod touch?
【发布时间】:2012-08-15 09:11:06
【问题描述】:

是否有一种安全的方法可以确定设备是否属于特定型号?例如,我必须知道用户使用的设备是否是视网膜显示器 iPod touch。

【问题讨论】:

  • 您需要知道的原因是什么?最好检查单个设备的功能而不是特定型号。

标签: iphone ios ipod-touch


【解决方案1】:
NSRange r = [[[UIDevice currentDevice] model] rangeOfString:@"iPod"];
float s = [[UIScreen mainScreen] scale];

if (r.location != NSNotFound && s > 1.5f) {
    // retina iTouch
}

【讨论】:

    【解决方案2】:

    我可能会尝试这样的事情:

    +(BOOL) isRetinaiPod
    {
        return [[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"] && [UIScreen mainScreen].scale >= 2.0f;
    }
    

    但是,您可以使用以下命令返回设备名称:

    + (NSString *) deviceName 
    {
        struct utsname u;
        uname(&u);
        return [NSString stringWithUTF8String:u.sysname];
    }
    

    【讨论】:

    • struct utsname u; uname(&u); return u; 这是错误的:struct utsname 不是 NSString。
    • 感谢指正。就是这样。我的代码在没有它的情况下工作,但我很不确定为什么!
    • 也许你从来没有调用过那个方法——如果你调用了它,它会因为 segfaul 而崩溃。 :)
    • 我实际上是在返回@(u.machine)。复制错误。我已经修改了我实际使用的内容(我缓存了值)
    • 啊,那很好 :) 是的,复制错误烦人,我也遇到过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2011-10-29
    相关资源
    最近更新 更多