UIIMageView 加载了错误的图像

Wrong image being loaded by UIIMageView

我有这个 iPhone 应用程序针对 iOS 7.

我在 .xcassets 上创建了一个名为 mainImage 的条目,该条目特定于 iPhone 设备。所以 xcode 向我展示了 4 个我必须用图像填充的位置。具有这些图像:1x2xRetina 4 2x3x.

我已按顺序在每个插槽中填充以下图片:

  1. 1x = 320 x 480 像素图像
  2. 2x = 750 x 1334 像素图像
  3. Retina 4 2x = 640 x 960 像素图像
  4. 3x = 1242 x 2208 像素图像

然后我在 Storyboard 上有一个 viewController 调整为 iPhone 6 大小,并且那里的 imageView 调整为仅加载 "mainImage".

那里显示的图像 iPhone 4 2x 被拉伸了,而不是正确的图像。它应该显示 750x1334 图像。

如果使用 "mainImage" 调整 imageView,难道它不应该加载 viewController 大小的正确图像吗?

我 运行 在 iPhone 6 上显示的图像确实是 iPhone 4 图像拉伸后的图像。

要解决这个问题吗?

不是这样的。您可以为不同的屏幕密度设置单独的图像,而不是为不同的屏幕尺寸设置单独的图像。您必须自己为每个屏幕尺寸和 select 图片添加一个单独的条目。启动图像是唯一可以自动处理不同屏幕尺寸的资产。

How to specify size for iPhone 6/7 customised edge-to-edge image?

每个 iDevice 都遵循以下准则: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1

事实上 xcassets 上还有一个 limitation/bug,除了不可能将其本地化为不同的语言之外,那就是能够加载不同的图像或更好地正确 iPhone 6。 Apple 没有意识到 xcassets 现在的工作方式不会加载正确的图像,如果你关心使用全屏图像。

解决方案是不使用 xcassets,创建您需要的图像和 class 根据屏幕调用正确的图像 size/needs。