用 CGImage 覆盖 CALayer
Covering a CALayer with a CGImage
我有一个 CGImage
,我想在 CALayer
中显示。将内容和重力设置为左下角的效果与预期一致。
layer.contents = cgimage
layer.contentsGravity = .bottomLeft
现在我想要居中并覆盖整个图层。使用 .center
只是将内容中心移到左下角。
layer.contents = cgimage
layer.contentsGravity = .center
只有当我将位置设置为视图的中心时,它才会按预期显示。
layer.contents = cgimage
layer.contentsGravity = .center
layer.position = CGPoint(x: view.frame.width/2, y: view.frame.height/2)
但是当重力设置为 resize-aspect-fill 时,任何东西都不会显示 - 无论是否设置位置。
layer.contents = cgimage
layer.contentsGravity = .resizeAspectFill
我觉得我缺少一些基本的东西。
为什么 CALayer
中的 CGImage
不覆盖完整尺寸并保持纵横比?
我可以显示图像填充。我认为你的视图在父视图中不居中。
let view = UIView.init(frame: self.view.bounds)
self.view.addSubview(view)
view.layer.contents = UIImage.init(named:"ic_control_group_unselect_on")?.cgImage
view.layer.contentsGravity = .resize
对于 .resize
和 .resizeAspectFill
类型的 contentGravity
来说,必须显式设置 CALayer
的框架。对于 .center
或 .bottomLeft
你可以不用。
我有一个 CGImage
,我想在 CALayer
中显示。将内容和重力设置为左下角的效果与预期一致。
layer.contents = cgimage
layer.contentsGravity = .bottomLeft
现在我想要居中并覆盖整个图层。使用 .center
只是将内容中心移到左下角。
layer.contents = cgimage
layer.contentsGravity = .center
只有当我将位置设置为视图的中心时,它才会按预期显示。
layer.contents = cgimage
layer.contentsGravity = .center
layer.position = CGPoint(x: view.frame.width/2, y: view.frame.height/2)
但是当重力设置为 resize-aspect-fill 时,任何东西都不会显示 - 无论是否设置位置。
layer.contents = cgimage
layer.contentsGravity = .resizeAspectFill
我觉得我缺少一些基本的东西。
为什么 CALayer
中的 CGImage
不覆盖完整尺寸并保持纵横比?
我可以显示图像填充。我认为你的视图在父视图中不居中。
let view = UIView.init(frame: self.view.bounds)
self.view.addSubview(view)
view.layer.contents = UIImage.init(named:"ic_control_group_unselect_on")?.cgImage
view.layer.contentsGravity = .resize
对于 .resize
和 .resizeAspectFill
类型的 contentGravity
来说,必须显式设置 CALayer
的框架。对于 .center
或 .bottomLeft
你可以不用。