为什么核心图形线不对齐?

Why Are Core Graphics Lines Not Aligned?

快速提问:这段代码应该产生(以及其他)4 条相互垂直的线。但是,当运行时,所有的线都有少量偏移。

for i in 0..<60 {
    CGContextSaveGState(ctx)
    CGContextTranslateCTM(ctx, rect.width / 2, rect.height / 2)
    CGContextRotateCTM(ctx, CGFloat(6.0 * Double(i) * M_PI / 180))
    CGContextSetStrokeColorWithColor(ctx, UIColor.grayColor().CGColor)
    CGContextMoveToPoint(ctx, 50, 50)
    if (i % 5 == 0) {
        CGContextSetLineWidth(ctx, 3.0)
        CGContextAddLineToPoint(ctx, 30, 30)

    }
    else {
        CGContextSetLineWidth(ctx, 2.0)
        CGContextAddLineToPoint(ctx, 40, 40)
    }
    CGContextStrokePath(ctx)
    CGContextRestoreGState(ctx)
}

仍在学习Core Graphics,很抱歉,如果这很简单。

此致,布兰登

编辑 1:

这是我得到的:

如果我的假设是正确的,您想在表盘上绘制看起来像刻度线的刻度线。

如果让它只绘制一次迭代,例如

for i in 0..<1

您会看到第一个刻度从某个角度开始。发生这种情况是因为您正在从 (x=50, y=50) 到 (x=30, y=30)

画线

尝试将其更改为 (x=50, y=0)(x=30, y=0)

for i in 0..<60 {
    CGContextSaveGState(ctx)
    CGContextTranslateCTM(ctx, rect.width / 2, rect.height / 2)
    CGContextRotateCTM(ctx, CGFloat(6.0 * Double(i) * M_PI / 180))
    CGContextSetStrokeColorWithColor(ctx, UIColor.grayColor().CGColor)
    CGContextMoveToPoint(ctx, 50, 0) // <-- changed here
    if (i % 5 == 0) {
        CGContextSetLineWidth(ctx, 3.0)
        CGContextAddLineToPoint(ctx, 30, 0) // <-- changed here

    }
    else {
        CGContextSetLineWidth(ctx, 2.0)
        CGContextAddLineToPoint(ctx, 40, 0) // <-- changed here
    }
    CGContextStrokePath(ctx)
    CGContextRestoreGState(ctx)
}

结果