Swift 如何在CALayer上居中放置CGImage?
我试图将Swift 如何在CALayer上居中放置CGImage?,swift,calayer,cgimage,Swift,Calayer,Cgimage,我试图将UIImage的CGImage设置为层的内容,然后将层添加到视图层 黄色视图的中心应该是五颗星。这就是我想要的。 但星星的中心似乎与视图的原点对齐。 我该怎么做才能纠正它 func putOnStars() { let rect = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) rect.background
UIImage
的CGImage
设置为层
的内容,然后将层
添加到视图
层黄色视图的中心应该是五颗星。这就是我想要的。
但星星的中心似乎与
视图的原点对齐。
我该怎么做才能纠正它
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
baseLayer.position = rect.center
2:将baseLayer
的位置设置为rect
的中心。执行此代码:
baseLayer.frame = rect.frame
baseLayer.position = rect.center
baseLayer
没有定义的帧,因此baseLayer.contentsGravity=kCAGravityCenter
可以正常工作,但它仍将位于潜在位置(0,0)
有两种可能的解决方案:
1:制作一个与rect
相同的baseLayer
帧。执行此代码:
baseLayer.frame = rect.frame
baseLayer.position = rect.center
2:将baseLayer
的位置设置为rect
的中心。执行此代码:
baseLayer.frame = rect.frame
baseLayer.position = rect.center
要将星星
图像
放置在CALayer
的中心,请给出该层的框架
,即
let baseLayer = CALayer()
baseLayer.frame = rect.bounds //This Line
baseLayer.contents = UIImage(named: "stars")?.cgImage
baseLayer.contentsGravity = kCAGravityCenter
rect.layer.addSublayer(baseLayer)
对于任何类型的CALayer
,您都需要明确定义其框架。要将星星
图像
放置在CALayer
的中心,请给出该层的框架,即
let baseLayer = CALayer()
baseLayer.frame = rect.bounds //This Line
baseLayer.contents = UIImage(named: "stars")?.cgImage
baseLayer.contentsGravity = kCAGravityCenter
rect.layer.addSublayer(baseLayer)
对于任何类型的CALayer
,都需要明确定义其框架。谢谢。我想没有必要设置框架。谢谢你。我认为没有必要设置框架。谢谢。这是可行的,但我会修改青色的答案,因为他比我早。当然……没问题……编码愉快……)谢谢。这是可行的,但我会修改青色的答案,因为他比我早。当然……没问题……编码愉快……)