如何在CAShapeLayer中仅将填充添加到UIBezierPath Rectangle的外部?

时间:2019-07-05 19:13:59

标签: swift

我在UIVIewController的视图内有一个UIIMageView。我在根视图的图层中绘制了一个矩形-UIBezierPath,我想只填充矩形的外部,而未填充矩形的内部,以便可以看到其下面的图像。下面是我的尝试,但它填充了矩形,而不是矩形的外部。

 let rectHoleSize = CGRect.init(x: myRectangle.frame.minX, y: myRectangle.frame.minY, width: myRectangle.frame.width, height: myRectangle.frame.height)

    let path = UIBezierPath.init(rect: rectHoleSize)
    path.usesEvenOddFillRule = true

    let layer = CAShapeLayer()
    layer.path = path.cgPath
    layer.fillRule = .evenOdd
    layer.fillColor = view.backgroundColor?.cgColor
    layer.opacity = 0.5
    view.layer.addSublayer(layer)

1 个答案:

答案 0 :(得分:0)

您将需要使用口罩。在图像视图的顶部放置一个填充层,并使用蒙版(可以是形状层)在填充层上打一个孔。