使用线性渐变快速添加阴影

问题描述 投票:0回答:1

我正在尝试添加阴影(如下图) 但我有这样的结果

代码:

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] 是吗?

swift layer shadow
1个回答
0
投票

这可以通过两种方式实现。您可以更改

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 线程中得到了回答。

© www.soinside.com 2019 - 2024. All rights reserved.