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)
}
}
Результат выглядит так:
Кажется, что дыра не была применена к той части тени, которую я добавил. Как я могу скрыть светло-голубую часть вдоль тени?