如何将 UIImage 添加到 CALayer
你只需使用其 contents
属性即可将图像添加到视图的 layer
:
myView.layer.contents = UIImage(named: "star")?.CGImage
- 请注意,
UIImage
需要转换为CGImage
。
如果你希望在自己的图层中添加图像,可以这样做:
let myLayer = CALayer()
let myImage = UIImage(named: "star")?.CGImage
myLayer.frame = myView.bounds
myLayer.contents = myImage
myView.layer.addSublayer(myLayer)
修改外观
上面的代码生成了这样的视图。浅蓝色是 UIView
,深蓝色的星星是 UIImage
。
但是,正如你所看到的,它看起来像是像素化的。这是因为 UIImage
小于 UIView
所以它被缩放以填充视图,这是默认情况下你没有指定任何其他内容。
以下示例显示了图层的 contentsGravity
属性的变体。代码如下所示:
myView.layer.contents = UIImage(named: "star")?.CGImage
myView.layer.contentsGravity = kCAGravityTop
myView.layer.geometryFlipped = true
在 iOS 中,如果你正在执行具有顶部或底部重力的任何操作,则可能需要将 geometryFlipped
属性设置为 true
,否则它将与你期望的相反。 (只有重力垂直翻转,而不是内容呈现。如果你在翻转内容时遇到问题,请参阅此 Stack Overflow 应答 。)
每个 contentsGravity
设置下面有两个 UIView
示例,一个视图大于 UIImage
,另一个视图小。这样你就可以看到缩放和重力的影响。
kCAGravityResize
这是默认值。
kCAGravityResizeAspect
kCAGravityResizeAspectFill
kCAGravityCenter
kCAGravityTop
kCAGravityBottom
kCAGravityLeft
kCAGravityRight
kCAGravityTopLeft
kCAGravityTopRight
kCAGravityBottomLeft
kCAGravityBottomRight
有关
笔记
- 此示例最初来自此 Stack Overflow 答案 。