假设我在捆绑包或资产目录中有三个图像:
- 默认~iphone.png
- 默认@2x~iphone.png
- [电子邮件受保护] /cdn-cgi/l/email-protection
在 iOS 4 及更高版本上,UIImage 构造函数可以采用图像名称,如下所示:
[UIImage imageNamed:@"Default"];
当我使用 3.5 英寸视网膜显示屏 (iPhone) 时,它会自动选择图像 (2)。如果在非视网膜显示器上,则选择 (1)。这很棒。
我将图像 3 命名为 4 英寸视网膜 (iPhone 5) 启动图像。有没有办法命名图像 (3),以便当我在 4 英寸视网膜显示屏上运行时,它会使用相同的 UIImage 构造函数返回?
也许这还没有实现,或者我对便利性期望太高......我只是试图避免代码中的任何条件逻辑来根据屏幕尺寸选择图像。
我也遇到了同样的问题,结果发现 iPhone 5/iPod Touch 第 5 代没有这种行为。
您必须手动确定您的应用程序是否在此类设备上运行,并相应地更改文件名。
我使用此方法来检查我的应用程序是否在 iPhone 5/iPod Touch 第 5 代上运行:
#define IS_PHONEPOD5() ([UIScreen mainScreen].bounds.size.height == 568.0f && [UIScreen mainScreen].scale == 2.f && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
然后你可以像这样调整图像名称:
if(IS_PHONEPOD5()) {
myImageView.image = [UIImage imageNamed:@"MyImage-568h.png"];
} else {
myImageView.image = [UIImage imageNamed:@"MyImage.png"];
}
Update
我还在github上发现了一个UIImage类别(Link https://gist.github.com/3782351)实现您正在寻找的内容。它没有针对不存在文件的后备方案,但您可以自己轻松实现它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)