gpt4 book ai didi

ios - 添加图像到 CALayer/CAShapeLayer 总是显示黑色

转载 作者:行者123 更新时间:2023-11-28 16:16:40 30 4
gpt4 key购买 nike

我想在一个圆形 CAShapeLayer 中添加一个图像,所以我开始像这样创建一个圆圈:

let circleContainer = UIBezierPath(arcCenter: pCenter, radius: radius - 10, startAngle: 0, endAngle: CGFloat(M_PI * 2), clockwise: true)
let imageSubLayer = CAShapeLayer()
imageSubLayer.path = circleContainer.CGPath

self.view.layer.addSublayer(imageSubLayer)

然后添加我做的图像:

let imageLayer = CALayer()
imageLayer.contents = UIImage(named: "pic")?.CGImage
imageSubLayer.addSublayer(imageLayer)

//I've also tried adding the image directly to the circular CAShapeLayer like so but without any success:
imageSubLayer.contents = UIImage(named: "pic")?.CGImage

问题是:当我运行应用程序时,circleContainer 总是显示黑色(见下图)。我究竟做错了什么 ?提前致谢!

enter image description here

最佳答案

您还没有设置imageLayer 的框架。但也不清楚你到底想达到什么目的。如果你想让你的图像遮住你的形状层,你需要将它设置为 imageLayer 的 mask 属性:

let imageLayer = CALayer()
imageLayer.contents = UIImage(named: "pic")?.CGImage
imageLayer.frame = view.bounds
imageLayer.mask = imageSubLayer
view.layer.addSublayer(imageLayer)

更新

如果您在 drawRect 中有此代码,您可以直接绘制到 View 的 CGContext 中。例如:

override func drawRect(rect: CGRect)
{
super.drawRect(rect)
let circleRect = CGRectInset(self.bounds, 10, 10)
let path = UIBezierPath(ovalInRect: circleRect)
path.lineWidth = 10
UIColor.yellowColor().set()
path.stroke()
path.fill()
path.addClip()
let image = UIImage(named: "pic")
image?.drawInRect(circleRect)
}

上面的代码绘制了一个黄色圆圈,中心的图像被剪裁到圆圈的边界。

关于ios - 添加图像到 CALayer/CAShapeLayer 总是显示黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39004074/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com