簡體   English   中英

如何在CALayer上居中CGImage?

[英]How to center a CGImage on a CALayer?

我試圖將UIImageCGImagelayer的內容,然后將該layer添加到viewlayer
黃色視圖的中心應該是五顆星。 那就是我想要的。
但似乎恆星的中心與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可以正常工作,但仍位於位置(0,0)。

有兩種可能的解決方案:

1:制作一個與rect相同的baseLayer框架。 實現此代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM