Добавление UIBezierPath в CAShapeLayer в iOS Swift - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь добавить bezierPath в качестве подслоя представления.

Ниже мой код

let arrPoints = Array(picture.points)

let bezierPath = UIBezierPath()

bezierPath.move(to: CGPoint(x: (arrPoints.first?.x.cgFloat()!)! * scaleX,
                            y: (arrPoints.first?.y.cgFloat()!)! * scaleY))

for index in 1...(arrPoints.count - 1) {
    let point = arrPoints[index]
    bezierPath.addLine(to: CGPoint(x: point.x.cgFloat()! * scaleX,
                                   y: point.y.cgFloat()! * scaleY))
}

let shapeLayer = CAShapeLayer()
shapeLayer.path = bezierPath.cgPath
shapeLayer.strokeColor = UIColor(hexString: picture.color)!.cgColor
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.lineWidth = picture.brushSize.cgFloat()!

let viewSymbol = SVGImageView(frame: CGRect(origin: origin, size: size))
viewSymbol.accessibilityHint = "Brush"
viewSymbol.isUserInteractionEnabled = true
viewSymbol.alpha = picture.alpha.cgFloat()!
viewSymbol.layer.insertSublayer(shapeLayer, at: 0)
viewSymbol.backgroundColor = UIColor(hexString: "#dfdfdf", transparency: 0.25)

viewLayerActive!.addSubview(viewSymbol)

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture(_:)))
viewSymbol.addGestureRecognizer(panGesture)

Кроме того, прикрепленное изображение показывает результат моей текущей реализации, где синее обведенное поле справа - подслой, а поле LightGray над Szpilman - представление, к которому я добавляю подслой

enter image description here

Как добавить подслой точно в серый квадрат?

...