Необходимо создать размытый вид пользовательской фигуры с тенью вокруг нее.
Я создаю пользовательский класс 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)