Это правильный способ установить рамку для CAShapeLayer? - PullRequest
0 голосов
/ 28 февраля 2019

Моя цель состоит в том, чтобы получить фигуры, которые я могу перетаскивать вокруг вида, но сначала я пытаюсь выяснить, является ли это правильным способом установки рамки так, чтобы рамка CAShapeLAyer's не все нули, и поэтому я могу позже перетащитьэто с событиями касания.

Ниже приведен код в моем классе (DrawOVerlay - DO), который используется для UIView на моем Viewcontroller:

 private func drawArc(user c: CGContext) {

    c.setLineCap(.round)
    c.setLineWidth(35.0)

    c.addArc(center: CGPoint(x:187.5,y:200), radius: 90.0, startAngle: -0.5 * .pi, endAngle: (-0.5 * .pi) + (3 / 2 * .pi ), clockwise: false)

    c.replacePathWithStrokedPath()

    let shape = CAShapeLayer()
    shape.frame = bounds
    shape.path = c.path
    shape.fillColor = UIColor.red.cgColor
    shape.strokeColor = UIColor.darkGray.cgColor
    shape.lineWidth = 1

    print("DO Bounds before:\(String(describing: shape.bounds))")
    print("DO Frame before:\(String(describing: shape.frame))")

    print("DO BoundingBox:\(String(describing: shape.path?.boundingBox))")

    shape.bounds = (shape.path?.boundingBox)!

    print("DO Bounds after:\(String(describing: shape.bounds))")
    print("DO Frame Width:\(String(describing: shape.frame))")

    self.layer.addSublayer(shape)
}

.давая мне правильные координаты для фигур bounds и frame, но я новичок в Swift и не уверен, что это правильный способ сделать это.

И затем, как мне использовать этоинформация о событиях касания для перетаскивания слоя формы без мерцания?

...