11

我正在尝试将 Images.xcassets 实施到我正在从事的项目中。据我了解,我可以将不同设备的所有不同大小的图像放在那里,然后调用 [UIImage imageNamed:@"name_of_image_set"] ,它将为我正在处理的设备返回正确的图像。

除了带有 4 英寸屏幕的 iPhone 5/5s/5c 之外,它似乎正在为所有东西拉出正确的图像。对于那个屏幕尺寸,它给了我带有 3.5 英寸屏幕的@2x iPhone 的图像。

Images.xcassets 中的配置图像

这是包含在图像文件夹中的 json。

{
  "images" : [
    {
      "idiom" : "iphone",
      "scale" : "1x",
      "filename" : "bg.png"
    },
    {
      "idiom" : "iphone",
      "scale" : "2x",
      "filename" : "bg@2x.png"
    },
    {
      "idiom" : "iphone",
      "filename" : "bg-568h@2x.png",
      "subtype" : "retina4",
      "scale" : "2x"
    },
    {
      "idiom" : "ipad",
      "scale" : "1x",
      "filename" : "bg~ipad.png"
    },
    {
      "idiom" : "ipad",
      "scale" : "2x",
      "filename" : "bg@2x~ipad.png"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

一切似乎都井井有条,我只是误解了 xcassets 应该如何工作吗?

谢谢

乔尔·贝尔

4

2 回答 2

4

我遇到了这个问题,问题似乎针对低于 7.0 的 iOS 版本。我的解决方案是创建一个单独的图像集,上面有一个 @2x 图像,并通过检测代码中的 iPhone 屏幕尺寸以编程方式实例化正确的图像就像在这里做的一样

相关: 为什么我的资产目录不返回 R4 图像?

于 2014-03-25T19:53:15.963 回答
0

我有同样的问题,但只在 ios7 中,我以编程方式加载图像,但它应该是同样的问题。

在我的 viewDidLoad 中,我添加了:

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { // if iOS 7
    self.edgesForExtendedLayout = UIRectEdgeNone; //layout adjustements
}

它基本上只是识别 iOS7 并应用了一些布局调整。添加此代码后,选择了正确的图片。最后我加载我的图像,你不必这样做:

 [productview setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];

在stackoverflow中也找到了这个答案,但再也找不到了。

于 2014-01-28T10:35:09.300 回答