Гладкий открытый UIBezierPath - PullRequest
       16

Гладкий открытый UIBezierPath

0 голосов
/ 25 апреля 2020

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

Узлы SKShapeNode являются открытыми UIBezierPaths с толстой линией ширины, однако вокруг дуг и кривых заметны зубчатые края. Изменение плоскостности, кажется, не имеет никакого эффекта. Есть ли способ сгладить их, или мне придется сделать закрытый UIBezierPath без ширины линии?

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Вам нужно создать закрытый UIBezierPath без ширины линии. Сделайте его shouldRasterize = true и установите правильный масштаб rasterizationScale = 2 * UIScreen.main.scale

0 голосов
/ 09 мая 2020

У меня есть решение моей проблемы. Вместо использования path.addAr c (), я теперь использую функцию, чтобы получить столько точек, сколько хотелось бы вдоль ar c, а затем использую path.addLine () для каждой из этих точек. Если вы хотите больше точек для более гладкого пути, просто уменьшите значение n.

func getCirclePoints(centerPoint: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool) -> [CGPoint] {
    let n : CGFloat = clockwise ? -1 : 1
    let points: [CGPoint] = stride(from: startAngle - n, through: endAngle + n, by: n).map {

        let degreesToRadians = CGFloat($0) * .pi / 180

        let x = centerPoint.x + radius * cos(degreesToRadians)
        let y = centerPoint.y + radius * sin(degreesToRadians)

        return CGPoint(x: x, y: y)
    }
    return points
}
...