为什么CGContextAddArc可以在32位而不是64位设备上运行?

时间:2014-03-13 21:54:56

标签: ios objective-c drawing core-graphics

我在图层委托中有以下代码。它只是绘制一个蓝色圆圈。它在32位iOS设备上运行良好,但在64位iOS设备上没有任何吸引力。为什么呢?

-(void) drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
    CGContextAddArc(context, 100., 100., 10., -M_PI, M_PI, YES);
    CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor);
    CGContextFillPath(context);
}

1 个答案:

答案 0 :(得分:5)

想通了。将M_PI转换为浮点解决了问题。这必须与CGContextAddArc采用CGFloat参数这一事实有关,而CGFloat在32位与64位平台上的定义不同。在32位上,它是一个浮点数,在64位上它是一个双倍的。

CGContextAddArc(context, 100., 100., 10., -(float)M_PI, (float)M_PI, YES);