带阴影的线圆 swift

Line circle with shadow 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)

line circle with default corner radius

line circle with corner radius 10.0

有人可以帮助我吗?

如果要创建 "stronger" 阴影的效果,可以使用描边大于 "casting the shadow" 路径的阴影路径来实现。这可以使用 copy(strokingWithWidth:lineCap:lineJoin:miterLimit:transform:):

来实现
shapeLayer.shadowPath = path.cgPath.copy(strokingWithWidth: width, lineCap: .round, lineJoin: .round, miterLimit: 0)

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

您可以配置描边阴影路径的shadowBlurwidth来达到您想要的效果。以下是一些示例: