我有一个具有不同默认图像的通用应用程序:
默认.png
默认@2x.png
Default-Portrait@2x~ipad.png
等等。如何在运行时以编程方式确定使用了哪个文件?我试过这个:
UIImage *imgUsed = [UIImage imageNamed:@"Default"];
但是无论我使用哪个模拟器,这总是会返回Default.png
(根据正在使用的屏幕尺寸,在模拟器中启动时会显示正确的图像)。
谢谢。
创建一个带有图像视图的“加载”视图控制器 - 一个 iPhone 和一个 iPad 版本。在每一个中,将图像设置为默认或默认-iPad - 将自动为您选择视网膜/非视网膜版本。
也将加载标签或活动指示器添加到视图控制器。
当您需要时,显示此视图控制器 - 您可以使用 UI_USER_INTERFACE_IDIOM() 宏(参见此处)判断您是在 iPhone 还是 iPad 上运行并加载相应的控制器。
你这样做的方式就像逆向工程。您了解屏幕比例是 1 还是 2(视网膜与否)以及设备的尺寸(iPad、iphone3.5 屏幕、iphone4.0 屏幕),然后使用此信息重新创建基本图像名称。
系统没有 api 可以告诉您此信息。
编辑:对,您可以根据@jrturton 的建议使用 UI_USER_INTERFACE_IDIOM 宏来确定 iPad/iPhone,但您仍然需要查看手机尺寸以了解是否使用了 3.5 英寸或 4 英寸高的图像。