通过CGContext绘制UIButton图像

时间:2018-06-11 19:06:25

标签: ios objective-c uibutton core-graphics cgcontext

为了在按钮上显示进度圆,我将弧形绘制到0,然后将其传递给CGContext,最后传递到UIImage图像。然而,它绘制的只是一个填充的正方形:

UIButton

为什么我得到一个实心方块,而不是一个填充的部分弧?这是将进度条画成圆圈的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

您的圆弧半径错误。实际的弧线正在您的上下文边界之外绘制。变化

CGContextAddArc(ctx,
                rect.size.width/2., // centerX
                rect.size.height/2.,  // centerY
                rect.size.width, // radius
                0, // start Angle
                M_PI/2., // end Angle
                1); // clockwise

CGContextAddArc(ctx,
                rect.size.width/2., // centerX
                rect.size.height/2.,  // centerY
                rect.size.width/2., // radius
                0, // start Angle
                M_PI/2., // end Angle
                1); // clockwise

另请注意,根据您的按钮类型,您可能会将图像视为模板,而不是您绘制的实际图像。要解决这个问题,您可以说(在使用按钮中的图像之前):

progressImg = 
    [progressImg imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];