如何将 CGImage 居中放置在 CALayer 上?

How to center a CGImage on a CALayer?

我试图将 UIImageCGImage 设置为 layer 的内容,然后将 layer 添加到 view' s layer.
它应该是黄色视图中心的五颗星。这就是我想要的。
但似乎星星的中心与 vieworigin 对齐。 我应该怎么做才能纠正它?

func putOnStars() {
    let rect = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height))
    rect.backgroundColor = .yellow
    view.addSubview(rect)

    let baseLayer = CALayer()
    baseLayer.contents = UIImage(named: "stars")?.cgImage
    baseLayer.contentsGravity = kCAGravityCenter
    rect.layer.addSublayer(baseLayer)

}

如果您想测试,这是为您准备的星星图像。

baseLayer 没有定义的框架,所以 baseLayer.contentsGravity = kCAGravityCenter 可以正常工作,但它仍然在 potision (0, 0) 上。

有两种可能的解决方案:

1 : 制作一个 baseLayer 的框架,与 rect 相同。执行此代码:

baseLayer.frame = rect.frame

2 : 将baseLayer的位置设置在rect的中心。执行此代码:

baseLayer.position = rect.center

要将 stars image 放在 CALayer 的中心,给出层的 frame,即

    let baseLayer = CALayer()
    baseLayer.frame = rect.bounds //This Line
    baseLayer.contents = UIImage(named: "stars")?.cgImage
    baseLayer.contentsGravity = kCAGravityCenter
    rect.layer.addSublayer(baseLayer)

对于任何一种 CALayer,您都需要明确定义其 frame