1. 获取Graphics Context
CGContextRef ctx = UIGraphicsGetCurrentContext();
2. 最后的渲染接口
CGContextStrokePath(ctx);//渲染空心图形,但线条没有空心直说,只有宽度
CGContextFillPath(ctx);//渲染实心图形,如圆、矩形等。
3. 基本接口
3.1. 基本图形接口
3.1.1. 颜色设置
//第一种颜色设置
CGContextSetRGBStrokeColor(ctx, 1.0, 0.7, 0.3, 1.0); //第二种颜色设置
CGContextSetRGBFillColor(ctx, 1.0, 0.7, 0.3, 1.0); //第三种设置颜色的方式:同时设置空心颜色和实心颜色
[[UIColor grayColor] set] //第四种颜色设置 实心颜色
[[UIColor grayColor] setFill] //第五种颜色设置 空心颜色
[[UIColor grayColor] setStroke] //第六种颜色设置
[[UIColor colorWithRed:1.0 green: blue: alpha:1.0] set];
3.1.2. 直线
// 设置起点
CGContextMoveToPoint(ctx, , );
// 设置终点
CGContextAddLineToPoint(ctx, , ); //关闭起点和终点
CGContextClosePath(ctx);
直线属性:
//设置线条的宽度
CGContextSetLineWidth(ctx, ); //设置线条起点和终点的样式为圆角
CGContextSetLineCap(ctx, kCGLineCapRound); //设置线条的转角的样式为圆角
CGContextSetLineJoin(ctx, kCGLineJoinRound);
3.1.3. 矩形
CGContextAddRect(ctx, CGRectMake(, , , ));
3.1.4. 圆
//圆
CGContextAddArc(ctx, , , , , * M_PI, ); //椭圆
CGContextAddEllipseInRect(ctx, CGRectMake(, , , ));
3.1.5. 圆弧
第一种方式,跟画圆一样,只是弧度大小小于 2*M_PI, 一个M_PI是180度。
CGContextAddArc(CGContextRef _Nullable c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise) //参数分别为:Graphics Context, 圆心X轴,圆心Y轴,半径,起始弧度,结束弧度,顺/逆时针
空心绘制时需要封口。
3.1.6. 饼状图
饼状图由两条线,和一个没有封口的圆弧组成。或者实现起来由一条线,一个圆弧,然后封口组成。注意的是,圆弧的圆心和线的起点是同一个点。
// 画线
CGContextMoveToPoint(ctx, , );
CGContextAddLineToPoint(ctx, , ); // 画圆弧
CGContextAddArc(ctx, , , , M_PI_2, M_PI, ); // 关闭路径
CGContextClosePath(ctx);
M_PI对应的弧度是180度,这样,就可以根据比例来算初始位置和大小了。