У меня есть UIIMageView внутри представления UIVIewController. Я нарисовал прямоугольник - 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)