向阴影已被UIBezierPath更改的UIView添加阴影

时间:2019-02-23 01:01:24

标签: ios swift uiview

我为UIView创建了一个扩展,该扩展允许我制作凹形。

extension UIView {
    func createConcave(depth: CGFloat) {
    let width = self.bounds.width
    let height = self.bounds.height

    let path = UIBezierPath()
    let p0 = CGPoint(x: 0, y: 0)
    let p2 = CGPoint(x: width, y: 0)
    let p1 = CGPoint(x: width / 2, y: depth)
    path.move(to: p0)
    path.addQuadCurve(to: p2, controlPoint: p1)
    path.addLine(to: CGPoint(x: width, y: height))
    path.addLine(to: CGPoint(x: 0, y: height))
    path.addLine(to: p0)
    let mask = CAShapeLayer()
    mask.path = path.cgPath
    self.layer.mask = mask
    self.layer.masksToBounds = false
    }
}

The shape of the UIView after implementing concavity

在与形状匹配的视图中添加阴影的一种好的解决方案是什么?我是否必须将阴影路径指定为与凹形相同的路径?

1 个答案:

答案 0 :(得分:4)

您正在将图层蒙版到路径。因此,包括阴影在内的所有物体都将被该蒙版剪切。

添加遮盖层,而不是遮罩。

例如

INSERT

结果是:

enter image description here