繁体   English   中英

将图像添加到CALayer / CAShapeLayer时始终显示黑色

[英]Adding image to CALayer/CAShapeLayer always shows black color

我正在尝试在圆形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始终显示黑色(请参见下图)。 我究竟做错了什么 ? 提前致谢!

在此处输入图片说明

您尚未设置imageLayer的框架。 但是也不清楚您到底要达到什么目标。 如果要使图像蒙版到形状图层,则需要将其设置为imageLayer的mask属性:

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

更新资料

如果在drawRect具有此代码,则可以直接绘制到视图的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)
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM