访问资产目录中具有特定分辨率的图像
Accessing an image with specific resolution in the Asset Catalog
我有一个名为 "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 Documentation 中没有找到任何似乎引用此内容的内容。
可以使用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]))
我有一个名为 "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 Documentation 中没有找到任何似乎引用此内容的内容。
可以使用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]))