在资产目录中访问具有特定分辨率的图像

我有一个名为“SmileyFace”的图像集,其中包含1x,2x和3x图像尺寸。 我想从图像集中复制粘贴到特定大小的粘贴板。 如何在下面的代码中以编程方式引用1x,2x或3x?

let image = UIImage(named: "SmileyFace" ) let image2 = UIImagePNGRepresentation( image ) UIPasteboard.generalPasteboard().setData(image2, forPasteboardType: "public.png") 

此代码复制1x。 我想复制2x图像。

我没有在Apple文档中找到任何可能引用此内容的内容。

您可以使用imageAsset.registerImage()方法:

  let scale1x = UITraitCollection(displayScale: 1.0) let scale2x = UITraitCollection(displayScale: 2.0) let scale3x = UITraitCollection(displayScale: 3.0) let image = UIImage(named: "img.png")! image.imageAsset.registerImage(UIImage(named: "img_2x.png")!, withTraitCollection: scale2x) image.imageAsset.registerImage(UIImage(named: "img_3x.png")!, withTraitCollection: scale3x) 

您可以为所有比例注册2x图像。

但是,我不认为访问具​​有特定分辨率的图像是个好主意。 1x,2x和3x图像集的想法是让系统决定应该加载哪个图像。 如果您真的想要,可以将1x,2x和3x图像的名称更改为SmileyFace-Small,SmileyFace-regular,SmileyFace-large。

更新: func imageWithTraitCollection(traitCollection: UITraitCollection) -> UIImage可以引用具有特定比例的图像:

  let image1 = image.imageAsset.imageWithTraitCollection(UITraitCollection(traitsFromCollections: [scale1x])) let image2 = image.imageAsset.imageWithTraitCollection(UITraitCollection(traitsFromCollections: [scale2x])) let image3 = image.imageAsset.imageWithTraitCollection(UITraitCollection(traitsFromCollections: [scale3x])) 
Interesting Posts