绘制方法

//drawRect:(CGRect)rect 是系统提供进行自定义绘图的   rect画布的大小,一般是view的bounds

//自定义绘制分为三步

1.获得画布  2.画布上添加图形  3.描绘图形(填充,描边)

填充:CGContextFillPath(context); 

描边:CGContextStrokePath(context);

//上下文,可以理解为画布,承载所有我们自定义绘制的内容

UIContextRef context = UIGraphicsGetCurrentContext;

设置填充的颜色

CGContextSexFillColorWithColor(context, [[UIColorblueColor]CGColor]);

设置描边的颜色

CGContextSetStrokeColorWithColor(context, [[UIColorredColor]CGColor]);

设置线条的宽度

CGContextSetLineWidth(context,5.0f);

画矩形

CGContextAddRect(context,CGRectMake(10, 20, 100, 200))

//画椭圆

CGContextAddEllipseInRect(context,CGRectMake(130,20,100,200));

 //x,y,radius 圆心坐标和半径。

    //弧线在圆上的度数。

    //clockwise,0,顺时针画,1,逆时针画。

    CGContextAddArc(context,100,350,100,0,M_PI_2,1);画直线 x,y线段的终点坐标.线段的起点就是上次绘制的终点CGContextMoveToPoint(context,300,100);

CGContextAddLineToPoint(context,300,400);

//写一段文字。

    NSString* text = @"这是一段很长很长的文字";    [textdrawAtPoint:CGPointMake(10, 230) withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:25.0f], NSForegroundColorAttributeName:[UIColor orangeColor], NSBackgroundColorAttributeName:[UIColor blueColor]}];

 //画一张图片。

    UIImage* image = [UIImageimageNamed:@"head.png"];

    //绘制图片和上面的底层实现是不一样的,绘制图片的时候坐标系的原点在左下角。

    //通过翻转和平移显示正确的图片。

    //CGContextScaleCTM(context, 1, -1);

    //CGContextTranslateCTM(context, 0, -400);

   // CGContextRotateCTM (context, M_PI);

    CGContextDrawImage(context, CGRectMake(20, 20, 100, 100), [image CGImage]);

总结:实际开发中不要使用CGContextDrawImage和drawAtPoint去绘制图片和文字,效率非常低.

//UILabel,CATextLayer和UIImageView都对底层的绘制有优化,效率比绘制高很多.

//drawRect:永远不要手动去调用.如果需要刷新屏幕自定义绘制的内容,需要调用UIView的setNeedsDisplay

调用setNeedsDisplay后,系统绘制合适的时间去调用drawRect;方法刷新屏幕,节省系统的开销.

你可能感兴趣的:(绘制方法)