我需要在 UIImage imageNamed 中添加 @3x 后缀吗?

Posted

技术标签:

【中文标题】我需要在 UIImage imageNamed 中添加 @3x 后缀吗?【英文标题】:Do I need to suffix @3x in UIImage imageNamed? 【发布时间】:2014-11-07 09:10:56 【问题描述】:

苹果提供iPhone 6iPhone 6 plus 设备。

我有三张照片,包括@2x@3x。当我使用UIImage imageNamed: 加载图像时。 我需要在文件末尾添加@3x 吗?我的命名约定是pic.pngpic@2x.pngpic@3x.png。 我是否需要先检查正在运行的设备是iPhone 6,然后是[UIImage imageNamed:@"pic@3x.png"] 或只是[UIImage imageNamed:@"pic"],然后设备会自动为正确的设备使用正确的图像?

【问题讨论】:

在新的 Xcode 项目树中,有一个 Image.xcassets (如果是旧项目,可能需要添加并链接它)文件。如果你打开它,你可以导入图像资源。这就是我们现在管理图像资产的方式,更干净,项目树更短。 这个后缀的唯一目的是启用自动选择正确的版本。 【参考方案1】:

Sol: [UIImage imageNamed:@"pic"] 就足够了,而不是 [UIImage imageNamed:@"pic.png"]

原因:

添加到项目后,设备会自动检测pic@2x.pngpic@3x.png。 如果您没有添加任何pic@2x.pngpic@3x.png 图片意味着设备将自动加载pic.png。 因此,您只需在项目中添加这一行 [UIImage imageNamed:@"pic"]

【讨论】:

你能帮我这个***.com/questions/43995059/…吗?【参考方案2】:
[UIImage imageNamed:@"pic"]

够了。

如果找到带有此后缀的图像,则会自动添加后缀(@2x 用于 iPhone 4 至 6,@3x 用于 iPhone 6 plus)。

【讨论】:

我认为这是一条评论 @san 它回答了这个问题。【参考方案3】:

TLDR:如果您支持 ios 6/7,请务必包含 @2x 图像,或者在 imageNamed 中指定“*@3x”。

如果您支持旧版本的 iOS (6/7),您需要做 2 件事中的 1 件事。

第一个选项:包括图像的所有版本(普通、2x、3x)。首选。

第二个选项:如果您只包含 @3x 图像,[UIImage imageNamed"pic"] 在 iOS 8 上会很好用(根据需要将 3x 图像缩小到 2x 或 1x 大小),但是,它在 iOS 7 上失败,因为 iOS 7 没有从来没有意识到@3x。你应该使用[UIImage imageNamed"pic@3x"]

【讨论】:

以上是关于我需要在 UIImage imageNamed 中添加 @3x 后缀吗?的主要内容,如果未能解决你的问题,请参考以下文章

UIImage imageNamed 返回 nil

UIImage 的 -imageNamed: 方法是不是适用于存储在“文档”中的图像文件?

CGImageRef cg = [[UIImage imageNamed: Path] CGImage];需要 CGImageRelease(cg)'?

UIImage imageNamed 上的实时应用程序崩溃:

UIImage imageNamed 不使用 xcode 4.4 显示图像

UIImage imageNamed:不会自动选择视网膜@2x 图像