带有阴影快速的线圆

Yur*_*ick 0 core-graphics shadow ios uibezierpath swift

我用阴影创建了线圆,但是当我尝试更改时shadowRadius,阴影没有显示

let path = UIBezierPath(ovalIn: rect)
let shapeLayer              = CAShapeLayer()
shapeLayer.path             = path.cgPath
shapeLayer.fillColor        = UIColor.clear.cgColor
shapeLayer.strokeColor      = UIColor.white.cgColor
shapeLayer.lineWidth        = 1
shapeLayer.shadowOpacity    = 0.9
shapeLayer.shadowColor      = UIColor.white.cgColor
shapeLayer.shadowOffset     = .zero
shapeLayer.shadowRadius     = 10.0
//shapeLayer.shadowPath       = path.cgPath

layer.addSublayer(shapeLayer)
Run Code Online (Sandbox Code Playgroud)

具有默认圆角半径的线圆

圆角半径为 10.0 的线圆

有人能帮我吗?

Dav*_*ist 7

如果您想通过“更强”的阴影创建效果,您可以使用已被描边为大于“投射阴影”的路径的阴影路径来实现。这可以使用copy(strokingWithWidth:lineCap:lineJoin:miterLimit:transform:)

shapeLayer.shadowPath = path.cgPath.copy(strokingWithWidth: width, lineCap: .round, lineJoin: .round, miterLimit: 0)
Run Code Online (Sandbox Code Playgroud)

这是这样一个阴影(红色)的样子,有和没有任何模糊(阴影半径):

有和没有模糊的描边阴影路径

您可以配置shadowBlurwidth描边路径的阴影,实现你所追求的效果。下面是一些例子:

阴影半径和阴影路径笔画宽度的一些变化