我正在使用一些使用CGPath绘制弧的示例代码。我已经浏览了一下并找到了文档,但我似乎无法直观地看到我在使用MoveToPoint,AddLineToPoint等方面的情况。我无法“看到”代码在做什么我可以看到结果。
例如,下面的代码从3点钟位置开始绘制一个完整的360度弧。对于我的生活,我无法弄清楚如何让它从12点钟位置开始实际旋转视图 - 90度。
有人可以帮我弄清楚这段代码以及如何改变它以实现从12点开始,最好是试图解释整个路径是如何工作的。或者也许可以在线指向我的视觉资源?
- (void)drawPathWithArc:(CGFloat)arc {
CGMutablePathRef thePath = CGPathCreateMutable();
CGPathMoveToPoint(thePath, NULL, 100.f, 100.f);
CGPathAddLineToPoint(thePath, NULL, 200.f, 100.f);
CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, 0.f, (360* M_PI)/180, NO);
CGPathCloseSubpath(thePath);
shapeLayer_.path = thePath;
CGPathRelease(thePath);
}
答案 0 :(得分:16)
路径真的不是那么难以理解。基本上所有路径都是连接笛卡尔平面上定义iphone屏幕的两个点的线。
当你移动ToPoint时,它会将路径的当前点设置为指定的点。
当你添加LineToPoint时,它会从当前点到指定点绘制一条直线。
当你添加曲线点时,它会根据某些切线和控制点从当前点到指定点绘制一条曲线。
等等。我建议在CGPaths上阅读apple文档,以便更好地理解每个函数的作用。
至于你的问题是从12而不是3开始,只需阅读CGPathAddArc函数的文档。
您需要做的是更改当前代码:
CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, 0.f, (360* M_PI)/180, NO);
到:
CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, -M_PI_2, M_PI_2*3, NO);
所有这一切都是将起始角度改为-90度(所有角度均以弧度从水平方向测量),结束角度改为270度。
希望这会有所帮助。 干杯,
布伦顿。