【发布时间】:2015-11-02 15:49:52
【问题描述】:
我正在开发一个包含大量图形的应用程序。该应用程序的目标是运行 iOS 7+ 的 iPhone,因此所有支持它的设备都有视网膜显示器。我只添加了@2x 和@3x 图形,因为@1x 图形永远不会被使用,而且我不希望捆绑包的大小超过它必须的增长。
我以编程方式加载大部分图像:
[self.imageView setImage:[UIImage imageNamed:@"ButtonOn"]];
这应该为@2x 显示器加载ButtonOn@2x.jpg,为iPhone 6 plus 加载ButtonOn@3x.jpg。
但是,我注意到了这种行为:
- iPhone 6 Plus 确实加载了@3x 图像。
- 但其他 iPhone(4、4s、5s 和 6)不加载 @2x。
- 我可以通过图形全名强制它加载@2x图像,例如:
[UIImage imageNamed:@"ButtonOn@2x.jpg"],但这违背了命名约定的目的,它也迫使我自己检测屏幕密度。
有没有办法让@2x 和@3x 图像没有@1x 图像?
更新:问题与屏幕密度无关。问题是,因为我使用的是 JPG 图形而不是 PNG 图形,所以 Xcode 找不到它们,除非我使用文件的全名扩展名。也许这是一个错误。
【问题讨论】:
-
当您的应用在 iPad 2 上运行时,您需要 1x 图像。
-
错误在于不听你被告知的内容......
-
我在听,但我也在使用资产目录。
-
您拥有一个资产目录,但这并不意味着您正在使用它。如果您在
imageNamed:中指定的名称与资产目录中设置的任何图像的名称都不匹配,则运行时会改为进入应用程序包。这就是它一直在做的事情。
标签: ios objective-c iphone uiimage