[英]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.