Zeplin 中的阴影值如题图一样,用代码实现如下:
添加如下扩展:
CALayer 的 masksToBounds 需要设置为 false,默认值就是 false,即不用设置,否则阴影看不出来
extension CALayer {
func setShadow(color: UIColor, alpha: CGFloat, x: CGFloat, y: CGFloat, blur: CGFloat, spread: CGFloat) {
shadowOffset = CGSize(width: x, height: y)
shadowRadius = blur * 0.5
shadowColor = color.cgColor
shadowOpacity = Float(alpha)
let rect = bounds.insetBy(dx: -spread, dy: -spread)
let path = UIBezierPath(roundedRect: rect, cornerRadius: cornerRadius)
shadowPath = path.cgPath
}
}
使用示例:
layer.setShadow(color: UIColor.red, alpha: 0.3, x: 0, y: 12, blur: 20, spread: -8)