如何绘制水平阴影?

时间:2020-06-25 17:14:48

标签: ios uikit

如何在视图底部下方绘制水平阴影?

目前,我正在这样绘制

    layer.shadowColor = UIColor.darkGray.cgColor
    layer.shadowOpacity = 0.3
    layer.masksToBounds = false
    layer.shadowRadius = 2
    
    let shadowPath = UIBezierPath()
    shadowPath.move(to: CGPoint(x: 0, y: bounds.height))
    shadowPath.addLine(to: CGPoint(x: bounds.width, y: bounds.height))
    shadowPath.addLine(to: CGPoint(x: bounds.width, y: bounds.height + shadowHeight))
    shadowPath.addLine(to: CGPoint(x: 0, y: bounds.height + shadowHeight))
    shadowPath.close()
    layer.shadowPath = shadowPath.cgPath

但是我最终得到一个小的垂直阴影。

Shadow

我希望像这样切断所有垂直阴影 enter image description here

1 个答案:

答案 0 :(得分:2)

您似乎在使用错误的工具来完成工作。当然,CALayer的shadow属性旨在模拟真实世界阴影的外观,并且对于这种用途,有意义的是,阴影不仅会停在拐角处,而且会缠绕在拐角处。要获得您所描述的外观,请改为draw a gradient。这是一些代码:

let gradientLayer = CAGradientLayer()
gradientLayer.colors = [UIColor(white: 0.5, alpha: 0.5).cgColor,
                        UIColor(white: 1.0, alpha: 0.0).cgColor]
gradientLayer.frame = layer.bounds
gradientLayer.anchorPoint = layer.anchorPoint
layer.addSublayer(gradientLayer)

然后我得到:

gray gradient