如何将 CGImage 居中放置在 CALayer 上?
How to center a CGImage on a CALayer?
我试图将 UIImage
的 CGImage
设置为 layer
的内容,然后将 layer
添加到 view
' s layer
.
它应该是黄色视图中心的五颗星。这就是我想要的。
但似乎星星的中心与 view
的 origin
对齐。
我应该怎么做才能纠正它?
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
。
我试图将 UIImage
的 CGImage
设置为 layer
的内容,然后将 layer
添加到 view
' s layer
.
它应该是黄色视图中心的五颗星。这就是我想要的。
但似乎星星的中心与 view
的 origin
对齐。
我应该怎么做才能纠正它?
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
。