首页 > 解决方案 > 带阴影 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)

具有默认角半径的线圆

圆角半径为 10.0 的线圆

有人能帮我吗?

标签: iosswiftcore-graphicsshadowuibezierpath

解决方案


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

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

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

带和不带模糊的描边阴影路径

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

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


推荐阅读