Swift-CAShapeLayer的UIView孔,阴影问题

时间:2018-09-06 08:58:07

标签: ios swift uibezierpath 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)

    }
}

结果显示如下:

似乎孔尚未应用到我添加的阴影部分。 如何隐藏阴影中的淡蓝色部分?

The result appear like this

0 个答案:

没有答案