简单的图形定制

画图入口

  • 关于画图的方法必须写在这个方法中

  • frame被确定后,就会执行drawRect方法

  • 执行[self setNeedsDisplay];方法时会重新调用drawRect方法


- (void)drawRect:(CGRect)rect {

// Drawing code

}

图形定制

扇形图


- (void)drawPieChart {

NSMutableArray *array =[NSMutableArray array];

for (int i = 0; i < arc4random_uniform(6) + 1; i++) {

[array addObject:@(RANDOMNUM)];

}

//用来存储所有值的总和

CGFloat totalF = 0.0;

//计算总和

for (NSNumber *num in array) {

totalF += num.floatValue;

}

//中心点坐标

CGPoint centerP = CGPointMake(130, 140);

//半径

CGFloat radiusF = 99.0;

//起点坐标

CGFloat startF = 0.0;

//终点坐标

CGFloat endF = 0.0;

for (int i = 0; i < array.count; i++) {

CGFloat currF = [array[i] floatValue];

//所占比例--度数大小

CGFloat angleF = currF / (totalF*1.0) * M_PI * 2;

startF = endF;

endF = angleF + startF;

UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:centerP radius:radiusF startAngle:startF endAngle:endF clockwise:YES];//clockwise :是否顺时针

//增加一条线段到中心点

[path addLineToPoint:centerP];

//关闭路径,组成扇形

[path closePath];

//颜色

[RANDOMCOLOR set];

[path fill];

}

}

虚线


- (void)drawDash {

//1.创建上下文

CGContextRef ref = UIGraphicsGetCurrentContext();

//2.创建路径

UIBezierPath *path = [UIBezierPath bezierPath];

//3.增加起点

[path moveToPoint:CGPointZero];

//4.增加一条线段到某个点

[path addLineToPoint:CGPointMake(99, 99)];

//5.颜色

[[UIColor redColor] set];

//6.线宽

CGContextSetLineWidth(ref, 4);

//6+.虚线

/**

*  lengths[] = {4, 2}

*  原理: 实线-4 空白-2 实线-4 空白-2

*  lengths[] = {4, 2, 3}

*  原理: 实线-4 空白-2 实线-3 空白-4 实线-2 空白-3

*  先实线后空白,实线和空白的长度为数组的循环引用

*/

CGFloat lengths[] = {4, 2};//因为CGContextSetLineDash方法用到的数组为C语言中的数组,所以此处数组用此种格式

CGContextSetLineDash(ref, 0, lengths, 2);//2为lengths的长度

//7.将路径添加到上下文

CGContextAddPath(ref, path.CGPath);

//8.渲染

//    CGContextFillPath(ref);//fill

//    CGContextStrokePath(ref);//stroke

CGContextDrawPath(ref, kCGPathFillStroke);//stroke + fill

}

椭圆(圆)


- (void)drawOval {

UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(88, 60, 99, 99)];

/**

*  set = setFill + setStroke

*/

//边框

[[UIColor redColor] setStroke];

//填充

[[UIColor yellowColor] setFill];

//线宽

path.lineWidth = 5;

//绘制

[path fill];//fill表示填充

[path stroke];//stroke表示绘制边框

}

三角形


- (void)drawTriangle {

//创建贝塞尔曲线类(路径)

UIBezierPath *path = [UIBezierPath bezierPath];

//起点坐标

[path moveToPoint:CGPointMake(20, 80)];

//增加一条线段到某个点

[path addLineToPoint:CGPointMake(220, 280)];

[path addLineToPoint:CGPointMake(230, 30)];

//将路径闭合,形成三角形

[path closePath];

//设置线段的颜色

[[UIColor redColor] set];

//设置线宽

path.lineWidth = 4;

//绘制

[path stroke];

}

你可能感兴趣的:(简单的图形定制)