UIView的DrawRect方法详解

UIView的DrawRect方法,简单说:

用来干啥的:就是用来绘图的。如果需要在View中绘制新的一些图形,比如曲线,直线,椭圆等,都需要重写DrawRect方法才可以;

什么时候调用:当View显示的时候调用(ViewWillAppear和ViewDidAppear之间)。如果View是隐藏的,也会调用的。转屏会调用,从新设置Frame时会调用;

参数rect:当View的bounds 在drawRect方法当中系统已经帮你创建一个跟View相关联的上下文(Layer上下文),只要获取上下文就可以了(上下文相当于当前View在父view中的坐标,具体是啥我打印出来了也没看明白,感兴趣的可以看这里:就是点击这里);

平时DrawRect使用有以下需要注意的地方:

1.DrawRect只可以由系统调用,不可自己调用。如果想触发该方法,可以调用setNeedsDisplay,或者setNeedsDisplayInRectangle:以触发drawRect:,但有个前提条件是rect不能为0;

2.其他的注意事项,这里说的更清楚,我就不剽窃人家的成果了。


比如画了几条折线,创建继承于UIView的SubClassView,重写代码如下,

- (void)drawRect:(CGRect)rect{
    // Drawing code.
    //获得处理的上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    NSLog(@"上下文,%@",context);
    //设置线条样式
    CGContextSetLineCap(context, kCGLineCapSquare);
    //设置线条粗细宽度
    CGContextSetLineWidth(context, 1.0);
    
    //设置颜色
    CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
    //开始一个起始路径
    CGContextBeginPath(context);
    //起始点设置为(0,0):注意这是上下文对应区域中的相对坐标,
    CGContextMoveToPoint(context, 0, 0);
    //设置下一个坐标点
    CGContextAddLineToPoint(context, 100, 100);
    //设置下一个坐标点
    CGContextAddLineToPoint(context, 0, 150);
    //设置下一个坐标点
    CGContextAddLineToPoint(context, 50, 180);
    //连接上面定义的坐标点
    CGContextStrokePath(context);
}

效果如下:

UIView的DrawRect方法详解_第1张图片

其他的那些狂炫酷拽吊炸天的各种曲线,可以去这里看 大量效果1  大量效果2

你可能感兴趣的:(iOS,iOS框架等)