一、理论知识
二、画线段
1.新建一个类MJLineView,拖一个UIView,Class为MJLineView
2.在drawRect:方法里画图
-(void)drawRect:(CGRect)rect { //1.获得图形上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); //2.拼接图形(路径) //设置一个起点(之所以在参数中传上下文是为了把点存到上下文中) CGContextMoveToPoint(ctx,10,10); //添加一条线段到点(100,100) CGContextAddLineToPoint(ctx,100,100); //再添加一条线段[会从(100,100)继续画] CGContextAddLineToPoint(ctx,150,40); //3.显示所绘制的东西 CGContextStrokePath(ctx);//空心 // CGContextFillPath(ctx); //实心 }
三、画形状(三角形,矩形等)
1.新建一个类MJShapeView,拖一个UIView,Class为MJShapeView
2.在drawRect:方法里画图
-(void)drawRect:(CGRect)rect { draw4Rect(); }
//画四边形(缺点:只能画水平的四边形,不能画斜的) void draw4Rect() { //1.获得上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); //2.画矩形 CGContextAddRect(ctx,CGRectMake(10,10,100,100)); //3.显示所绘制的东西 CGContextStrokePath(ctx); }
//画三角形 void drawTriangle() { //1.获得上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); //2.画三角形 CGContextMoveToPoint(ctx,0,0); CGContextAddLineToPoint(ctx,100,100); CGContextAddLineToPoint(ctx,150,80); //关闭路径(连接起点和最后一个点) CGContextClosePath(ctx); //3.显示所绘制的东西 CGContextStrokePath(ctx); }
四、画圆和圆弧
二、画线段
1.新建一个类MJCircleView,拖一个UIView,Class为MJCircleView
2.在drawRect:方法里画图
//在view第一次显示到屏幕上的时候会调用一次 -(void)drawRect:(CGRect)rect { } //画圆/椭圆 void drawCircle() { //1.获得上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); //2.画椭圆(如果都相等则为圆) CGContextAddEllipseInRect(ctx,CGRectMake(50,10,100,50)); //CGContextSetLineWidth(ctx,10); //如果设置这个,就变成了圆环 //3.显示所绘制的东西 CGContextStrokePath(ctx); } //画圆弧 void drawArc() { //1.获得上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); //2.画圆弧 //CGContextAddArc(ctx,圆心的x,圆心的y,半径,开始角度,结束角度, 顺时针0或逆时针1); CGContextAddArc(ctx,100,100,50,0,M_PI,1); //3.显示所绘制的东西 CGContextStrokePath(ctx); }
五、画文字和图片
1.新建一个类MJTextImageView,拖一个View,Class设置为MJTextImageView
2.实现drawRect:方法
-(void)drawRect:(CGRect)rect { drawText(); }
//画文字(用OC方法画文字不需要上下文,已经封装好了) void drawText() { //1.画文字 NSString *str = @"哈哈哈哈Good morning hello"; //设置字体颜色 NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; attrs[NSForegroundColorAttributeName] = [UIColor redColor]; [str drawInRect:CGRectMake(50,50,100,100) withAttributes:nil]; //2.显示所绘制的东西 CGContextStrokePath(ctx); }
//画图片(用OC方法画图片不需要上下文,已经封装好了) void drawText() { //1.取得图片 UIImage *iamge = [UIImage imageNamed:@"me"]; //2.画 [image drawInRect:CGRectMake(50,50,100,100)];//会填充整个rect PS:drawAsPatternInRect:方法可以画格子花纹 //3.显示所绘制的东西 CGContextStrokePath(ctx); }