我的CAShapeLayer
有不透明的笔触和透明填充。然后我想调用myContext.drawRadialGradient
,但是将这个径向渐变剪辑放到我的形状图层的笔划中。目前,我正在调用myShapeLayer.path.addClip()
,它将径向渐变剪切到形状图层的填充区域,而不是笔划。
换句话说,我想使用只是图层的不透明部分或只是笔划(在我的情况下也是如此),以及用它来剪辑当前的上下文。我一直在搜索CoreGraphics文档一段时间无济于事。
答案 0 :(得分:1)
找到我的答案。您可以使用笔划创建一个新的UIBezierPath,它是现有UIBezierPath的副本,如下所示:
let strokePath = UIBezierPath(cgPath: oldPath.cgPath.copy(
strokingWithWidth: ..., lineCap: ..., lineJoin: ..., miterLimit: ...))
strokePath.addClip()
答案 1 :(得分:0)
如果将形状图层添加为渐变图层的蒙版,该怎么办?这应该工作,因为这是掩模层应该做的事情。
如果这不起作用,您可能需要将形状图层捕获到图像并将THAT安装为渐变图层的蒙版。
答案 2 :(得分:0)
将描边路径转换为填充区域与原始描边相同的新路径。现在您有一个可填充的区域,可以用作剪裁区域。 CGContext的方法是调用replacePathWithStrokedPath
。正如文档明确指出:
例如,您可以通过调用此函数然后调用函数
clip()
来剪切到路径的描边版本。