Swift - отверстие UIView с CAShapeLayer, проблема с тенью

В настоящее время я использую этот пользовательский класс UIView, чтобы сделать дыру в определенных видах.

class MessageHoleView: UIView {

    var customBackgroundColor: UIColor!

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        self.backgroundColor = UIColor.clear

        let radius: CGFloat = 26.0

        let path = UIBezierPath(roundedRect: self.bounds, cornerRadius: 5.0)

        let circleCenter = CGPoint(x: self.frame.width - 16.0 + radius, y: 4.0 + radius)
        let circlePath = UIBezierPath(arcCenter: circleCenter, radius: radius, startAngle: 90.0 * .pi / 180, endAngle: 270.0 * .pi / 180, clockwise: true)

        path.append(circlePath)
        path.usesEvenOddFillRule = true

        let fillLayer = CAShapeLayer()
        fillLayer.path = path.cgPath
        fillLayer.fillRule = kCAFillRuleEvenOdd
        fillLayer.fillColor = self.customBackgroundColor.cgColor
        fillLayer.opacity = 1.0

        fillLayer.cornerRadius = 5.0
        fillLayer.shadowColor = UIColor.lightGray.cgColor
        fillLayer.shadowOffset = CGSize(width: CGFloat(1.0), height: CGFloat(1.0))
        fillLayer.shadowOpacity = 0.5

        self.layer.insertSublayer(fillLayer, at: 0)

    }
}

Результат выглядит так:

Кажется, что дыра не была применена к той части тени, которую я добавил. Как я могу скрыть светло-голубую часть вдоль тени?

Результат выглядит так

0 ответов

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