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 ответов

Другие вопросы по тегам