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)