Ios UIImage imageWithContentsOfFile在iPhone6Plus上跳过@2x

Ios UIImage imageWithContentsOfFile在iPhone6Plus上跳过@2x,ios,uiimage,Ios,Uiimage,我想知道我是否错过了什么,或者我是否再次遇到了新的视网膜缺陷。我在iPhone6Plus上的应用看起来像是非视网膜时代的缩放版应用,原因如下 对于我的大多数需要,我使用[UIImage imageWithContentsOfFiles:],因为我只加载一次,而且我不需要系统像[UIImage imageNamed:]那样缓存图像。前者必须提供完整或部分路径在大多数情况下,使用[[NSBundle mainBundle]resourcePath]的路径就足够了,另一个路径是应用程序主捆绑中的资源名

我想知道我是否错过了什么,或者我是否再次遇到了新的视网膜缺陷。我在iPhone6Plus上的应用看起来像是非视网膜时代的缩放版应用,原因如下

对于我的大多数需要,我使用[UIImage imageWithContentsOfFiles:],因为我只加载一次,而且我不需要系统像[UIImage imageNamed:]那样缓存图像。前者必须提供完整或部分路径在大多数情况下,使用[[NSBundle mainBundle]resourcePath]的路径就足够了,另一个路径是应用程序主捆绑中的资源名称

我相信[UIImage imageWithContentsOfFiles:]和[UIImage imageNamed:]在根据设备的缩放比例解析要使用的正确图像文件时应该表现相同。看来情况并非如此

例如,如果没有@3x图像可用,但有1.0和@2x图像可用,则iPhone6Plus在使用[UIImage imageWithContentsOfFiles:]时将忽略@2x图像,除非给出@2x图像文件的绝对路径


另一方面,如果@3x图像不可用,[UIImage ImageName:]会在iPhone6Plus上加载@2x图像。@2x图像在那里,但在缩放比例大于2.0的设备上,[UIImage imageWithContentsOfFiles:]会立即解析为1.0图像。

文档明确指出,+imageNamed:方法会尝试解析当前屏幕的文件名;与+imageWithContentsOfFiles相反:它直接加载特定的文件,正如您在问题中提到的,作为您的体验。从文档来看,这看起来非常简单……那么也许他们不应该让它在其他设备上工作。在retina4设备5、5s上,imageWithContentsOfFile:加载相应的@2x图像,iPhone6Plus将加载@3x图像(如果可用)。我的观点是ImageName:的解析行为在imageWithContentsOfFile:中实现了一半,因此我的问题是:bug还是我遗漏了什么?这也引出了一个问题:如果我想加载非常特定的1.0映像,该怎么办?通过将1.0版本的副本打包到不同的资源文件中使我的应用程序更大?我还注意到Interface Builder中的ImageView不会加载@2x版本,如果应用程序在iPhone 6 Plus上运行,它会立即返回到1.0级别的图像。