iOS学习笔记iOS高阶UI相关iOS开发

绘制视图

2017-03-14  本文已影响60人  喵喵嘟噜啡

当我们想要重绘某个视图的时候,我们不能直接调用drawRect:的方法,因为该方法为系统自动调用,我们手动调用无效,系统提供了两个方法让我们进行间接调用drawRect:来达到重绘视图的目的

方法一:重新绘制这个view

[self setNeedsDisplay];

方法二:重新绘制view的某个区域

[self setNeedsDisplayInRect:rect];

// 绘制一条贝赛尔曲线

- (void)p_drawCurve {

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextMoveToPoint(context, 100, 100);

// 绘制贝赛尔曲线

// 参数一:关联的绘制目标

// 参数二:控制点1的x坐标

// 参数三:控制点1的y坐标

// 参数四:控制点2的x坐标

// 参数五:控制点2的y坐标

// 参数六:终点的x坐标

// 参数七:终点的y坐标

CGContextAddCurveToPoint(context, 150, 50, 50, 200, 200, 100);

CGContextStrokePath(context);

}

// 画一个矩形

- (void)p_drawOneRect {

CGContextRef context = UIGraphicsGetCurrentContext();

// 绘制矩形

// 参数一:关联的绘制目标

// 参数二:绘制位置及大小

CGContextAddRect(context, CGRectMake(100, 100, 100, 100));

CGContextStrokePath(context);

}

// 绘制椭圆

- (void)p_drawEllipse {

CGContextRef context = UIGraphicsGetCurrentContext();

// 绘制椭圆

// 参数一:关联的绘制目标

// 参数二:绘制的位置及大小

CGContextAddEllipseInRect(context, CGRectMake(100, 100, 100, 100));

CGContextStrokePath(context);

}

// 绘制一条多端点的线

- (void)p_drawLines {

CGContextRef context = UIGraphicsGetCurrentContext();

CGPoint pointArray[] = {CGPointMake(100, 100), CGPointMake(200, 100), CGPointMake(200, 200), CGPointMake(100, 200)};

// 通过数组绘制一条多端点的线

// 参数一:关联的绘制目标

// 参数二:数组

// 参数三:数组元素个数

CGContextAddLines(context, pointArray, sizeof(pointArray) / sizeof(CGPoint));

// 设置填充的颜色

// 方法一:

CGContextSetRGBFillColor(context, 211.f / 255.f, 106.f / 255.f, 119.f / 255.f, 1.0);

// 方法二:

[[UIColor redColor] setFill];

// 闭合绘制路径,会从当前点绘制至起点

CGContextClosePath(context);

//    CGContextStrokePath(context);

//    // 填充闭合路径

//    CGContextFillPath(context);

// 绘制路径

CGContextDrawPath(context, kCGPathFillStroke);

}

// 绘制一条弧

- (void)p_drawArc {

CGContextRef context = UIGraphicsGetCurrentContext();

// 绘制一条弧

// 参数一:关联的绘制目标

// 参数二:原点的坐标x

// 参数三:原点的坐标y

// 参数四:半径

// 参数五:起始弧度

// 参数六:结束弧度

// 参数七:绘制方向(0为顺时针,1为逆时针)

CGContextAddArc(context, 100, 100, 50, 0, 135 * (M_PI / 180), 1);

CGContextStrokePath(context);

}

// 绘制一条线段

- (void)p_drawLine {

// 获取绘制目标,当绘制引擎调用drawRect方法进行视图渲染的时候,会自动为我们创建一个绘制目标,这个目标相当于一块画布,关联着我们需要绘制的内容

CGContextRef context = UIGraphicsGetCurrentContext();

// 设置一个起点的坐标,绘制系统会追踪至该点进行绘制

// 参数一:关联的绘制目标

// 参数二:起点的x坐标

// 参数三:起点的y坐标

CGContextMoveToPoint(context, 100, 100);

// 设置一条线上的端点

// 参数一:关联的绘制目标

// 参数二:该端点的x坐标

// 参数三:该端点的y坐标

CGContextAddLineToPoint(context, 200, 100);

// 设置描边的颜色

// 方法一:

CGContextSetRGBStrokeColor(context, 211.f / 255.f, 106.f / 255.f, 119.f / 255.f, 1.0);

// 方法二:

[[UIColor redColor] setStroke];

// 设置描边的宽度

CGContextSetLineWidth(context, 20);

// 描边

CGContextStrokePath(context);

}

上一篇 下一篇

猜你喜欢

热点阅读