是否有方法确定正在运行应用程序的设备。如果可能的话,我想区分iPhone和iPod Touch。


当前回答

我喜欢埃里卡·萨顿的作品。她包括苹果电视设备和其他你可能想不到的设备。

https://github.com/erica/uidevice-extension/blob/master/UIDevice-Hardware.h

其他回答

我进一步将大的“isEqualToString”块转换为设备类型、生成和逗号后的其他限定符(我称之为子生成)的位掩码分类。它被包装在一个类中,带有一个单例调用SGPlatform,避免了大量重复的字符串操作。代码可用https://github.com/danloughney/spookyGroup

这个类允许你做这样的事情:

if ([SGPlatform iPad] && [SGPlatform generation] > 3) {
    // set for high performance
}

and

switch ([SGPlatform deviceMask]) {
case DEVICE_IPHONE:
    break;
case DEVICE_IPAD:
    break;
case DEVICE_IPAD_MINI:
    break;
}

设备的分类在platformBits方法中。这个方法对于本文的读者来说应该非常熟悉。我根据设备的类型和年代对其进行了分类,因为我最感兴趣的是整体性能,但源代码可以调整以提供您感兴趣的任何分类,如视网膜屏幕、网络功能等。

你可以像这样使用UIDevice类:

NSString *deviceType = [UIDevice currentDevice].model;

if([deviceType isEqualToString:@"iPhone"])
    // it's an iPhone

我已经创建了一个扩展,让你有3个级别的识别:

设备类型 按英寸划分iPhone/iPad的类型 设备型号

它会随着最新的iOS设备进行更新

UIDeviceDetector

要识别iPhone 4S,只需检查以下内容:

var isIphone4S: Bool {

    let width = UIScreen.main.bounds.size.width
    let height = UIScreen.main.bounds.size.height
    let proportions = width > height ? width / height : height / width

    return proportions == 1.5 && UIDevice.current.model == "iPhone"
}

请随意使用这个类(gist @ github)

代码已删除并重新定位到 https://gist.github.com/1323251

更新(01/14/11)

显然,这段代码现在有点过时了,但它肯定可以使用Brian Robbins提供的这个线程上的代码进行更新,其中包括更新模型的类似代码。谢谢你在这个帖子上的支持。