iOS小知识点03

关于图形绘制

今天在项目中有一个小需求,需要在视图上绘制一个圆,内部有一个点,点不能超出圆外,于是找了一些关于图形绘制方面的资料。以下只记录一些自己用到的知识点。
1.view的drawRect方法。该方法不能手动调用,是由系统自动调用的,在需要调用该方法时候,可以通过调用setNeedsDisplay方法,这时候系统会去调用drawRect方法。一般情况下,创建一个继承自UIView的类,在该类中重写drawRect方法。例如:
一个继承自UIView的类MyView,在其MyView.m文件中重写:
方法一:

-(void)drawRect:(CGRect)rect {

    // 获取处理的上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    // 设置线条样式
    CGContextSetLineCap(context, kCGLineCapRound);
    // 设置线条粗细宽度
    CGContextSetLineWidth(context, 1.0);
    // 设置颜色
    CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 1);
    // 开始一个起始路径
    CGContextBeginPath(context);
    // 画圆
    CGContextAddArc(context, 120, 120, 60, 0, M_PI * 2, YES);
    // 连接上面定义的坐标点
    CGContextStrokePath(context);
}

方法二:

-(void)drawRect:(CGRect)rect {
// 创建UIBezierPath对象
UIBezierPath *bezierPath = [UIBezierPath bezierPath];
// 画圆
[bezierPath addArcWithCenter:CGPointMake(120, 120) radius:60 startAngle:0 endAngle:M_PI * 2 clockwise:YES];
// 设置线宽
bezierPath.lineWidth = 1;
// 设置stroke颜色
[[UIColor blackColor] setStroke];
//  绘制
[bezierPath stroke];
}

在控制器中添加该视图就能看到视图中的绘制的圆形 .

2.使用CAShapeLayer与UIBezierPath 绘图

使用CAShapeLayer与UIBezierPath 绘图可以实现不在view的drawRect方法中就画出一些想要的图形;
步骤:
1.新建UIBezierPath 对象bezierPath;
2.新建CAShapeLayer对象caShapeLayer;
3.将bezierPath的CGPath赋值给caShapeLayer的path,即caShapeLayer.path = bezierPath.CGPath;
4.把caShapeLayer添加到某个显示该图形的layer中。

例如,在viewController中作了如下操作

- (void)setUpUI {
CGPoint arcCenter = CGPointMake([UIScreen mainScreen].bounds.size.width/2, 120);
CGFloat radius = 80;
CGFloat startAngle = 0.0;
CGFloat endAngle = M_PI * 2;
// 创建 UIBezierPath对象
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithArcCenter:arcCenter radius:radius startAngle:startAngle endAngle:endAngle clockwise:YES];
// 创建CAShapeLayer对象
CAShapeLayer *layer = [[CAShapeLayer alloc] init];
layer.path = bezierPath.CGPath;
layer.fillColor = [UIColor clearColor].CGColor;
layer.strokeColor = [UIColor blackColor].CGColor;
layer.lineWidth = 5;
// 将CAShapeLayer对象添加到视图的layer中
[self.view.layer addSublayer:layer];
}

运行程序后,会看到视图中绘制的圆。

你可能感兴趣的:(iOS小知识点03)