代码:
func addShadow() {
layer.masksToBounds = false
layer.shadowRadius = 10
layer.shadowOpacity = 0.5
layer.shadowColor = UIColor.purple.cgColor
layer.shadowOffset = CGSize(width: 0 , height: 5)
layer.shadowPath = UIBezierPath(rect: CGRect(x: 0,
y: bounds.maxY - layer.shadowRadius - 10,
width: bounds.width,
height: layer.shadowRadius)).cgPath
}
如何更改代码以获得正确的结果?看起来它必须是 3 种颜色,就像线性渐变 [.white, .purple, .white] 是吗?
这可以通过两种方式实现。您可以更改
x
和 width
的 UIBezierPath
,使阴影位于视图的中心。检查下面的代码片段:
layer.shadowPath = UIBezierPath(rect: CGRect(x: bounds.width / 3,
y: bounds.maxY - layer.shadowRadius - 10,
width: bounds.width / 3,
height: layer.shadowRadius)).cgPath
此处宽度分为 3 部分(白色、紫色、白色),BezierPath 的
x
从第一部分的末尾开始。这将解决目的,因为角的颜色是白色的。
另一种方法是创建渐变。它已经在 this SO 线程中得到了回答。