我需要在 UIImage imageNamed 中添加 @3x 后缀吗?
Posted
技术标签:
【中文标题】我需要在 UIImage imageNamed 中添加 @3x 后缀吗?【英文标题】:Do I need to suffix @3x in UIImage imageNamed? 【发布时间】:2014-11-07 09:10:56 【问题描述】:苹果提供iPhone 6
和iPhone 6 plus
设备。
@2x
和@3x
。当我使用UIImage imageNamed:
加载图像时。
我需要在文件末尾添加@3x
吗?我的命名约定是pic.png
、pic@2x.png
、pic@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.png
和pic@3x.png
。
如果您没有添加任何pic@2x.png
或pic@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: 方法是不是适用于存储在“文档”中的图像文件?
CGImageRef cg = [[UIImage imageNamed: Path] CGImage];需要 CGImageRelease(cg)'?
UIImage imageNamed 上的实时应用程序崩溃: