Как пересекать CAShapeLayers в iOS - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть знак плюс (+), который в настоящее время окрашен в синий цвет, но я хотел бы сделать его прозрачным, чтобы пользователь мог видеть фон.Слой плюс добавляется в увеличенное изображение.Установка слоя плюс на clear цвет не решает проблему.

class AddButtonView: UIView {
    ...

    private func setupPlusLayer() {
        let path = UIBezierPath()
        path.move(to: CGPoint(x: plusButton.frame.midX, y: plusButton.frame.midY-20))
        path.addLine(to: CGPoint(x: plusButton.frame.midX, y: plusButton.frame.midY+20))
        path.move(to: CGPoint(x: plusButton.frame.midX-20, y: plusButton.frame.midY))
        path.addLine(to: CGPoint(x: plusButton.frame.midX+20, y: plusButton.frame.midY))
        path.usesEvenOddFillRule = true

        let shapeLayer = CAShapeLayer()
        shapeLayer.fillRule = .evenOdd
        shapeLayer.path = path.cgPath
        shapeLayer.strokeColor = UIColor.blue.cgColor
        shapeLayer.fillColor = UIColor.blue.cgColor
        shapeLayer.lineWidth = 4

        // Add that `CAShapeLayer` to your view's layer:
        self.layer.addSublayer(shapeLayer)
    }
}

enter image description here

Как сделать знак плюса прозрачным?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Вы можете достичь этого с помощью:

  1. создать круг CAShapeLayer (circleShape);
  2. создать инвертированный слой маски (inverted) того же цвета, что и circleShape.Для этого случая вам понадобится CGMutablePath с точно такой же траекторией круга и плюсом.Также не забудьте установить inverted.fillRule = .evenOdd;
  3. , чем вам нужен слой только с прозрачным знаком плюс (plusShape);
  4. добавить circleShape в качестве подслоя к слою вида;
  5. маска установки: circleShape.mask = inverted;
  6. добавить plusShape в качестве подслоя для просмотра слоя.

Вот и все!Теперь у вас есть прозрачный плюс петь.Пример:

enter image description here

0 голосов
/ 15 декабря 2018

Попробуйте использовать изображение .png с прозрачным +, оно будет работать нормально, и вам не нужно рисовать плюс.

...