您的位置:首页 > 其它

-drawRect学习总结

2015-10-14 15:48 369 查看
drawRect是UIView的一个方法,用于View的绘制操作。先贴上一段代码:

CustomView.m
- (void)drawRect:(CGRect)rect{
CGContextRef context=UIGraphicsGetCurrentContext();

CGContextSetLineWidth(context, 2);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);

CGContextMoveToPoint(context, 0, 0);
CGContextAddLineToPoint(context, rect.size.width, 0);
CGContextAddLineToPoint(context, rect.size.width, rect.size.height);
CGContextAddLineToPoint(context, 0, rect.size.height);
CGContextAddLineToPoint(context, 0, 0);

CGContextStrokePath(context);

}
1、CustomView继承自UIView,并重写drawRect方法进行自定义绘制。2、在drawRect方法里,绘制的主要流程如下:(1)获得绘制上下文
CGContextRef context=UIGraphicsGetCurrentContext();
(2)设置线条(画笔)属性。这里只设置了线条颜色和粗细。
CGContextSetLineWidth(context, 2);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
(3)设置绘制的路线。
CGContextMoveToPoint(context, 0, 0);
CGContextAddLineToPoint(context, rect.size.width, 0);
CGContextAddLineToPoint(context, rect.size.width, rect.size.height);
CGContextAddLineToPoint(context, 0, rect.size.height);
CGContextAddLineToPoint(context, 0, 0);
(4)绘制。
CGContextStrokePath(context);
3、drawRect方法一般只会执行一次,如果要多次重绘,需要调用setNeedsDisplay或setNeedsDisplayInRect,如:
CustomView *cView=[[CustomView alloc] initWithFrame:CGRectMake(100, 200, 200, 200)];
cView.backgroundColor=[UIColor redColor];
[bgView addSubview:cView];
[cView performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:5.0f];//5s后重绘
4、如果一开始初始化CustomView时未设置frame,则drawRect不会被调用。5、绘图上下文(CGContextRef)只有在drawRect才有效,即以下代码只有在drawRect中才会获得正确的context,其他地方及时调用了也不回有结果。
CGContextRef context=UIGraphicsGetCurrentContext();
6、绘图上下文就是指当前的CustomView,可以把CustomView想象成一个画布,drawRect方法就是在这块画布上作图。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  drawRect CGContextRef