平滑打开 UIBezierPath

Smooth open UIBezierPath

我正在尝试使圆弧和曲线的边缘平滑。

SKShapeNodes 是开放的 UIBezierPaths,具有较粗的线宽,但是,弧形和曲线周围的锯齿状边缘很明显。改变平面度似乎没有任何效果。有没有办法平滑这些,或者我将不得不制作一个没有线宽的封闭 UIBezierPath?

您需要创建没有线宽的封闭式 UIBezierPath 还 使其成为 shouldRasterize = true 并设置适当的比例 rasterizationScale = 2 * UIScreen.main.scale

我有办法解决我的问题。现在,我不再使用 path.addArc(),而是使用一个函数来沿弧线获取尽可能多的点,然后对这些点中的每一个点使用 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([=10=]) * .pi / 180

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

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