【问题标题】:Asset catalog images of type Retina 4 2x not presented on iPhone 6iPhone 6 上未显示 Retina 4 2x 类型的资产目录图像
【发布时间】:2014-12-29 10:48:51
【问题描述】:

我正在使用包含以下两种图像的资产目录:2x、Retina 4 2x 和 3x。所有这些文件都用于正确的设备 iPhone 4, 4s => 2x, iPhone 5, 5s => Retina 4 2x, iPhone 6+ => 3x ,但 iPhone 6 使用的是 2x 而不是 Retina 4 2x。 有人遇到过这个问题吗?

谢谢

[编辑文本] 图像集是一般图像,而不是启动屏幕。无论我使用通用设置还是设备设置,无论我选择 2x Retina 4 是 1334 还是 1136,iPhone 6 上呈现的图像都是常规 2x 之一。

我正在添加我选择的三个不同设置的屏幕截图,所有三个结果都是附加模拟器的屏幕截图

----------------模拟器截图(iPhone 6):----------------

----------------设备设置屏幕截图,包括 568:----------------

----------------设备设置屏幕截图,包括 667---------------

----------------使用 Universal 的设置屏幕截图---------------

----------------图片集设置截图(设备设置&667高度图片)--------- ------

---------------发射台的屏幕截图----------------

【问题讨论】:

  • 您能否显示您的资产目录的屏幕截图,您的问题不是很清楚,它可能会有所帮助。
  • 您说的是启动图像、应用程序图标还是一般图像?
  • 我通过编辑原始问题回答了您的问题
  • 我也有同样的问题。您是否设法解决它并为 iPhone 6 加载正确的图像(Retina 4 之一)?
  • 还没有,我在这方面投入了很多时间,似乎很难。如果您有机会找到解决方案,我会很高兴知道。

标签: ios iphone xcode6 iphone-6 asset-catalog


【解决方案1】:

据我所知,您似乎想以原始分辨率显示全屏图像。

是的,我认为这可能是一个已知问题。我认为您无法使用资产目录来做到这一点。我最终在这里像这个人一样做:https://stackoverflow.com/q/25892207/342756

我的应用是横向的,我的背景图片以原生 res 填充整个屏幕,我只是这样称呼:

[UIImage imageForDeviceWithName:@"myBackground"];

这里是“myBackground”的文件和分辨率列表(又是横向):

  • myBackground@2x.png == 960 × 640
  • myBackground-568h@2x.png == 1136 × 640
  • myBackground-667h@2x.png == 1334 × 750
  • myBackground@3x.png == 2208 × 1242
  • myBackground~ipad.png == 1024 × 768
  • myBackground@2x~ipad.png == 2048 × 1536

我不再支持 1x。这几乎涵盖了所有 iOS 7 和 iOS 8 设备。希望这会有所帮助。

干杯!

【讨论】:

  • 这个解决方案也适用于完全删除retina4资产的xcode7(为什么??还有其他方法)。默认情况下,它会加载与 iphone4 和 4s 匹配的 @2x 图像,而不是更高设备的图像。我指的是全屏图像,例如背景(不是启动图像)
【解决方案2】:

这适用于 Xcode v7.3,并在运行 iOS v9.3 的 iPhone 4s 模拟器中验证。

为避免缩放问题,我做了以下操作:

在我的 Images.xcassets 中,我创建了两个图像集:
介绍屏幕
intro_screen_4

在介绍屏幕中,我包含了以下图片
1x 320x480
2x 750x1334
3x 1242x2208

在 intro_screen_4 中,我只包含了 iPhone 4 的图像
2x 640x960

在我的代码中,我执行了以下操作:

int screenHeight = [ [ UIScreen mainScreen ] bounds ].size.height;

if(screenHeight == 480)
{
    image = [UIImage imageNamed:@"intro_screen_4" ];
}
else {
    image = [UIImage imageNamed:@"intro_screen" ];
}

【讨论】:

    【解决方案3】:

    我认为这是资产目录中特定于设备的设置的一个已知问题。请改用通用设置(1x、2x 和 3x)。 iPhone 5、5s 和 6 都将使用 2x,一切都会好起来的。

    【讨论】:

    • 谢谢,不过我也试过了,结果还是一样
    • 让我问你这个问题:你记得创建一个专用的 iPhone 6 启动图像(或使用启动图像 xib/storyboard)吗?因为如果您不这样做,您的应用程序将在 iPhone 6 上进行扩展,并被视为另一台设备。
    • 是的,我刚刚在原始消息中添加了一个屏幕截图
    • 但我的想法是,也许你必须使用启动文件(xib)tooApple says:“您使用启动 XIB 或故事板文件来表明您的应用程序在 iPhone 6 Plus 或 iPhone 6 上运行。”因此,在您这样做之前,它可能不会在 iPhone 6 上本机运行。
    猜你喜欢
    • 2015-06-05
    • 2014-11-03
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多