具有自定义形状和阴影的UIVisualEffectView

时间:2019-02-28 14:49:16

标签: swift shadow blur uibezierpath uivisualeffectview

需要对自定义形状进行模糊处理,并带有阴影。

我制作一个自定义UIView类,在drawRect中绘制所需的形状,然后制作一个阴影层CAShapeLayer,并插入索引0。

问题是我将该层的fillColor设置为白色(白色), UIColor.yellow.setFill() bezierPath.fill() 在关闭我的路径之后。

因此,当我将UIView替换为UIVisualEffectView并尝试在其contentView中添加形状图层时,只要图层不透明,我就会失去模糊效果。

所以我要么获得带有阴影的自定义形状视图,要么获得矩形模糊视图。 如何同时获得它们?

class CustomShapedBlurView: UIVisualEffectView {
    override func draw(_ rect: CGRect) {
        let path = UIBezierPath()
        // cgpoint-movements
        path.close()
        UIColor.yellow.setFill()
        path.fill()

        let shapeMask = CAShapeLayer()
        shapeMask.frame = rect
        shapeMask.path = path.cgPath
        shapeMask.shadowOpacity = 2
        shapeMask.shadowRadius = 10
        shapeMask.shadowOffset = CGSize(width: 0, height: -8)
        shapeMask.shadowColor = UIColor.black.cgColor
        shapeMask.fillColor = UIColor.white.cgColor

        self.contentView.layer.insertSublayer(shapeMask, at: 0)
    }
}

最近我将效果设置为UIBlurEffect(style: .light)

0 个答案:

没有答案