当view调用[view setNeedsDisplay]方法时,drawRect方法就会被调用,
drawRect是图形绘制方法,要在view上绘图,绘制的代码必须写在这个view的drawRect方法中,绘制的图形实质上是画到了view.layer上
- (void)drawRect:(CGRect)rect {
CGContextRef:图形绘制上下文;UIGraphicsGetCurrentContext():获得当前绘制对象的上下文
CGContextRef context = UIGraphicsGetCurrentContext
();
设置绘制上下文的线条宽度
CGContextSetLineWidth(context, 5
);
设置绘制线条的颜色
CGContextSetStrokeColorWithColor(context, [[UIColor blueColor]CGColor
]);
设置绘制线条的RGB颜色
CGContextSetRGBStrokeColor(context, 25/255.0, 25/255.0, 25/255.0, 0.8);
设置线条端点的形状
CGContextSetLineCap(context, kCGLineCapRound
);
把编辑位置(笔尖)移动到某一点
CGContextMoveToPoint(context, 40, 40
);
画一条直线到某一点
CGContextAddLineToPoint(context, 100, 40);
CGContextAddLineToPoint(context, 100, 100 );
CGContextAddLineToPoint(context, 100, 100 );
设置线段拐角的形状
CGContextSetLineJoin(context, kCGLineJoinRound
);
设置线条闭合
CGContextClosePath
(context);
CGContextDrawPath把设计好的绘制路径绘制到上下文中,第二个属性为绘制模式,画线(stroke)和填充(Fill)
CGContextDrawPath(context, kCGPathStroke
);
画矩形
CGContextAddRect(context, CGRectMake(130, 40, 100, 50));
设置填充颜色
CGContextSetFillColorWithColor(context, [[UIColor greenColor]CGColor]);
CGContextDrawPath(context, kCGPathFillStroke);
CGContextDrawPath(context, kCGPathFillStroke);
画圆形
CGContextMoveToPoint(context, 40, 40);
CGContextAddArcToPoint(context, 100, 40, 100, 100, 80);
CGContextDrawPath(context, kCGPathStroke);
CGContextAddArcToPoint(context, 100, 40, 100, 100, 80);
CGContextDrawPath(context, kCGPathStroke);
画曲线
CGContextMoveToPoint(context, 100, 200);
CGContextAddQuadCurveToPoint(context, 100, 400, 320,250);
CGContextDrawPath(context, kCGPathStroke);
CGContextAddQuadCurveToPoint(context, 100, 400, 320,250);
CGContextDrawPath(context, kCGPathStroke);
画扇形
CGContextMoveToPoint(context, 50, 300);
CGContextAddArc(context, 100, 450, 100, 60*M_PI/180, 180*M_PI/180, 0);
CGContextClosePath(context);
CGContextDrawPath(context, kCGPathStroke);
CGContextAddArc(context, 100, 450, 100, 60*M_PI/180, 180*M_PI/180, 0);
CGContextClosePath(context);
CGContextDrawPath(context, kCGPathStroke);
画图片
UIImage * img = [UIImage imageNamed:@"ee.jpg"
];
drawInRect是把图片绘制到当前的图形绘制上下文中
[img drawInRect:CGRectMake(200, 400, 100, 100)];
文本绘制,把文本绘制到当前的图形绘制上下文中
[@"这是文本绘制" drawInRect:CGRectMake(250, 120, 60,30) withAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]}];
}