iphone - 在 iPhone SDK 中检测视网膜屏幕/iPhone 4

标签 iphone cocoa-touch iphone-4

在我的应用程序中,我从网络(准确地说是从我的服务器)下载一些图像,为了节省一些带宽,特别是手机上的内存,我以两种分辨率提供它们:“旧”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];

有没有更好的解决办法(也许很明显但我错过了)?

最佳答案

刚刚在官方苹果开发者论坛上阅读了一些内容,这些问题已经在那里进行了详细讨论。对我来说最好的方法似乎是使用 UIScreenscale 属性。虽然它仅在 iOS 4 及更高版本中可用,但它会告诉您需要了解的一切,并且很可能在未来发挥更重要的作用(已经注意到 iPad 的屏幕分辨率为 1024x768正好是 32/15 * 480x320?)。

UIScreen.mainScreen.scale

如果您还有其他想法,请随时发布:)

关于iphone - 在 iPhone SDK 中检测视网膜屏幕/iPhone 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272752/

相关文章:

ios - UINavigationController 内容在 UIPopover 中显示时的偏移量

html - 如何防止我的网站水平滚动?

php - 通过 PHP 广播推送通知

objective-c - 在 iOS 上播放 youtube/vevo 视频

objective-c - iPhone OS 有理想的网络操作数量吗?

iphone - 获取动画 ScrollView 的当前位置

iPhone 4 应用程序会在 iPad 上自动扩展吗?

iphone - iOS - 全局异常处理程序

iphone - UIImagePNGRepresentation() 和比例(iPhone 4 屏幕)

xcode - 了解 iPhone 分辨率