Как добавить заливку ТОЛЬКО снаружи UIBezierPath Rectangle в CAShapeLayer? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть 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)

1 Ответ

0 голосов
/ 05 июля 2019

Вам нужно будет использовать маску.Поместите заполненный слой поверх вида изображения и пробейте отверстие в заполненном слое с помощью маски (которая может быть слоем формы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...