UIVisualEffectView с пользовательской формой и тенью - PullRequest
0 голосов
/ 28 февраля 2019

Необходимо создать размытый вид пользовательской фигуры с тенью вокруг нее.

Я создаю пользовательский класс 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)

...