我正在开发一个只能安装在 iPhone 4 和更高版本中的应用程序。我还通过UIRequiredDeviceCapabilities 和设备兼容性矩阵。我需要更多解决方案。
问问题
304 次
1 回答
2
好吧,首先您可以使用UIDevice
该类将模型作为字符串接收:
[[UIDevice currentDevice] model]
这将返回类似“iPod touch”或“iPhone”的内容。
您可以使用以下代码获得确切的模型平台:(
您必须#include <sys/types.h>
和<sys/sysctl.h>
)
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platform = @(machine); // Old syntax: [NSString stringWithCString:machine encoding:NSUTF8StringEncoding]
free(machine);
现在platform
是一个包含设备生成的字符串,例如:
iPhone1,1
适用于iPhone 2G(第一款 iPhone)iPhone1,2
适用于iPhone 3GiPhone2,1
适用于iPhone 3GSiPhone3,1
或iPhone3,2
iPhone 4iPhone4,1
适用于iPhone 4SiPhone5,1
或iPhone5,2
iPhone 5
注意,iPhone 4 平台的逗号前面的数字实际上是3,而不是 4。使用这个字符串可以隔离这个数字,并检查它是否大于等于 3:
if ([[[UIDevice currentDevice] model] isEqualToString:@"iPhone"]) {
if ([[[platform componentsSeparatedByString:@","][0] substringFromIndex:6] intValue] >= 3) {
// Device is iPhone 4 or newer
} else {
// Device is older than iPhone 4
}
}
但是:您实际上可以检查屏幕的比例,因为 iPhone 4 是第一款配备 Retina 显示屏的 iPhone:
[[UIScreen mainScreen] scale] // Returns 2.0f on the iPhone 4 and newer and 1.0f on older devices
于 2013-04-01T14:05:12.730 回答