3

我有一个具有不同默认图像的通用应用程序:

默认.png

默认@2x.png

Default-Portrait@2x~ipad.png

等等。如何在运行时以编程方式确定使用了哪个文件?我试过这个:

    UIImage *imgUsed = [UIImage imageNamed:@"Default"];

但是无论我使用哪个模拟器,这总是会返回Default.png(根据正在使用的屏幕尺寸,在模拟器中启动时会显示正确的图像)。

谢谢。

4

2 回答 2

1

创建一个带有图像视图的“加载”视图控制器 - 一个 iPhone 和一个 iPad 版本。在每一个中,将图像设置为默认或默认-iPad - 将自动为您选择视网膜/非视网膜版本。

也将加载标签或活动指示器添加到视图控制器。

当您需要时,显示此视图控制器 - 您可以使用 UI_USER_INTERFACE_IDIOM() 宏(参见此处)判断您是在 iPhone 还是 iPad 上运行并加载相应的控制器。

于 2012-11-17T18:02:21.967 回答
0

你这样做的方式就像逆向工程。您了解屏幕比例是 1 还是 2(视网膜与否)以及设备的尺寸(iPad、iphone3.5 屏幕、iphone4.0 屏幕),然后使用此信息重新创建基本图像名称。

系统没有 api 可以告诉您此信息。

编辑:对,您可以根据@jrturton 的建议使用 UI_USER_INTERFACE_IDIOM 宏来确定 iPad/iPhone,但您仍然需要查看手机尺寸以了解是否使用了 3.5 英寸或 4 英寸高的图像。

于 2012-11-17T17:50:31.250 回答