如何使用CGPathAddCurveToPoint创建一个完美的半圈?

Pro*_*ber 3 iphone core-graphics cgpath ipad ios

我试图用CGPathAddCurveToPoint创建一个15点半径的完美右半圆,如下所示:

CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddCurveToPoint(path, NULL, 15, 0, 15, 30, 0, 30);
Run Code Online (Sandbox Code Playgroud)

它从圆圈的中间开始.然后将第一个控制点设置为圆的边界框的右上角.第二个控制点设置在圆的边界框的右下角.圆圈终止于边界框的底部中间.

但绘制时,圆圈呈鸡蛋状.

我怎样才能从0,0点向右开始到0,30结束,形成一个完美无瑕的右半球?

Noa*_*oon 5

CGPathAddCurveToPoint创建贝塞尔曲线,而不是圆弧.您正在寻找的方法是CGPathAddArcCGPathAddArcToPoint,如下所示:

CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddArc(path, NULL, 0, 15, 15, M_PI_2, -M_PI_2, true);
Run Code Online (Sandbox Code Playgroud)