在我的应用程序中,我从网络(准确地说是从我的服务器)下载一些图像,为了节省一些带宽,特别是手机上的内存,我以两种分辨率提供它们:“旧”iPhone系列的480x320和对于配备视网膜显示屏的 iPhone 4,分辨率为 960x640。现在,当应用程序在支持视网膜屏幕的设备上运行时,我需要能够从应用程序内部进行检测。我怎么能这么做呢?
我一直在考虑使用下面的代码片段,它会返回一个特定的设备标识符,例如。 “iPhone3”,但这样我就会将检测限制在 iPhone4 上,并且需要为任何具有视网膜显示屏的后续设备更新该代码。
size_t size;
// Set 'oldp' parameter to NULL to get the size of the data
// returned so we can allocate appropriate amount of space
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
// Allocate the space to store name
char *name = malloc(size);
// Get the platform name
sysctlbyname("hw.machine", name, &size, NULL, 0);
// Place name into a string
NSString *machine = [NSString stringWithCString:name];
有没有更好的解决方案(也许它很明显但我错过了)?
刚刚在官方苹果开发者论坛上阅读了一些内容,这些问题已经在那里进行了详细讨论。对我来说最好的方法似乎是使用scale
的财产UIScreen
。虽然它仅适用于iOS 4
之后,它会告诉你需要知道的一切,并且很可能在未来发挥更重要的作用(已经注意到iPad的屏幕分辨率1024x768恰好是32/15 * 480x320?)。
UIScreen.mainScreen.scale
如果您还有其他想法,请随时发布:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)