一、Layer上下文
当UIView第一次显示出来的时候,会调用view的drawRect方法,在drawRect方法中,可以获取和当前视图相关联的图形上下文,图形上下文中已经包含了决定绘制的输出目标,在UIView的drawRect方法中调用 UIGraphicsGetCurrentContext方法即可以获取到上下文(Layer上下文);
当view的frame发生改变的时候,drawRect会被自动调用;自定义view的背景颜色如果是default color的话,在drawRect方法中,会有缓存,可以手动调用CGContextClearRect方法清除;
1.画线
CGContextMoveToPoint(ctx, 10, 100); // 起点
CGContextAddLineToPoint(ctx, 100, 100); // 终点
线(绘制直线,实际上layer并没有直接渲染出来,而只是保存了绘制的信息)
CGContextMoveToPoint方法默认会给我们创建一个路径,之后的操作会把点添加到路径中;
2.绘制圆和圆弧
CGContextAddEllipseInRect(ctx, CGRectMake(100, 100, 50, 50)); // 画圆
CGContextAddArc(ctx, 50, 50, 50, 0, M_PI_2, 0); // 画圆弧,前两个参数为圆心,接着的参数分别为半径,开始弧度,结束弧度,画圆弧方向(1逆时针,0顺时针)
3.绘制矩形
CGContextAddRect(ctx, CGRectMake(10, 10, 100, 100));
// 绘制矩形,之后需要调用渲染方法(参见第7条);
CGContextStrokeRect(ctx, CGRectMake(10, 10, 100, 100));
// 绘制矩形 | Fill,自动渲染,不需要手动调用渲染方法;
UIRectFill(CGRectMake(10, 10, 100, 100));
// 通过OC的方法绘制实心四边形,该方法没有空心的方法;
4.绘制文字
dict[NSForegroundColorAttributeName] = [UIColor redColor]; // 文字颜色
dict[NSBackgroundColorAttributeName] = [UIColor redColor]; // 文字