[关闭]
@chenbinghua 2015-09-14T22:03:36.000000Z 字数 1455 阅读 1294

iOS开发之Quartz2D

iOS笔记


阅读参考:Quartz2D介绍

什么是Quartz2D,有什么用

Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统
Quartz2D最重要的作用是:自定义控件!自定义控件!自定义控件!重要的事情说三遍。
事实上iOS中大部分控件的内容都是通过Quartz2D画出来的

图形上下文

如何自定义View

首先,得有图形上下文,因为它能保存绘图信息,并且决定着绘制到什么地方去
其次,那个图形上下文必须跟view相关联,才能将内容绘制到view上面

自定义view的步骤

View内部有个layer(图层)属性,drawRect:方法中取得的是一个Layer Graphics Context,因此,绘制的东西其实是绘制到view的layer上去了。

View之所以能显示东西,完全是因为它内部的layer。

  1. 新建CBHView类,继承UIView
  2. 重写- (void)drawRect:(CGRect)rect方法
  3. - (void)drawRect:(CGRect)rect {
  4. // 1.获取上下文
  5. CGContextRef ctx = UIGraphicsGetCurrentContext();
  6. // 2.描述路径
  7. // 2.1设置起点
  8. CGContextMoveToPoint(ctx, 50, 50);
  9. // 2.2添加线段
  10. CGContextAddLineToPoint(ctx, 100, 100);
  11. // 3.渲染上下文
  12. CGContextStrokePath(ctx);
  13. // CGContextFillPath(ctx); 填充线段包围的区域
  14. }

此处输入图片的描述

  1. UIKit框架已经封装了一些绘图功能
  2. - (void)drawRect:(CGRect)rect {
  3. // 创建贝瑟尔路线,底层获取drawRect:方法内的Layer Graphics Context图形上下文
  4. UIBezierPath *path = [UIBezierPath bezierPath];
  5. [path moveToPoint:CGPointMake(50, 50)];
  6. [path addLineToPoint:CGPointMake(200, 200)];
  7. // 线宽
  8. path.lineWidth = 10;
  9. // 颜色
  10. [[UIColor redColor] set];
  11. // 渲染上下文
  12. [path stroke];
  13. }

Quartz2D的常用函数

常用拼接路径函数

  1. 新建一个起点
  2. void CGContextMoveToPoint(CGContextRef c, CGFloat x, CGFloat y)
  3. 添加新的线段到某个点
  4. void CGContextAddLineToPoint(CGContextRef c, CGFloat x, CGFloat y)
  5. 添加一个矩形
  6. void CGContextAddRect(CGContextRef c, CGRect rect)
  7. 添加一个椭圆
  8. void CGContextAddEllipseInRect(CGContextRef context, CGRect rect)
  9. 添加一个圆弧
  10. void CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y,
  11. CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注