如何用CGPathAddCurveToPoint创build一个完美的半圆?

我想用CGPathAddCurveToPoint创build一个完美的半径为15点的半圆,就像这样:

CGPathMoveToPoint(path, NULL, 0, 0); CGPathAddCurveToPoint(path, NULL, 15, 0, 15, 30, 0, 30); 

它从圈子的中间开始。 然后将第一个控制点设置到圆的边界框的右上angular。 第二个控制点设置在圆的边界框的右下angular。 圆圈在边框的底部中间结束。

但是画出来的时候,这个圆圈有一个像蛋的形状。

我怎样才能做出一个完美的,完美无瑕的右半球,从0,0点开始到0,30点?

CGPathAddCurveToPoint创build一个Bézier曲线 ,而不是一个圆弧。 你正在寻找的方法是CGPathAddArcCGPathAddArcToPoint ,如下所示:

 CGPathMoveToPoint(path, NULL, 0, 0); CGPathAddArc(path, NULL, 0, 15, 15, M_PI_2, -M_PI_2, true);