转载自:http://www.jianshu.com/p/f7768af134b4
介绍
iOS中绘画技术主要有UIKit、Quartz 2D、Core Animation和OpenGL ES。那么他们的架构是这样子的:Graphics hardware->OpenGL/Core Graphics ->Core Animation->UIKit,UIKit位于最高层,硬件位于最底层,中间的部分是绘画中一些具体技术。
UIKit
高级别图形接口,API急于Swif与OC。能够访问绘画、动画、字体、图片等
Quartz 2D
iOS和Mac OS X 环境下的2D绘画引擎。设计内容包括基于路径的绘画、透明度、遮盖、阴影、透明层、颜色管理、防锯齿、PDF相关处理。又被称为Core Graphics,缩写为CG,API都是基于C语言。
Core Animation
动画实现技术
OpenGL ES
主要针对嵌入式设备的简化版本,可以绘制高性能的2D、3D图形。
视图绘制周期
无论使用哪种技术,绘制都发生在UIView对象的区域内。
drawRect:绘制视图,在里面添加UIKit、Core Animation等技术
setNeedsDisplay:重新绘制整个视图
setNeedsDisplayInRect:设置视图或者视图的部分区域。
原则上尽量不要绘制视图的全部,以减少重新绘制的开销。
UIKit绘制:
UIRectFill(CGRect rect):填充矩形函数
UIRectFrame(CGRect rect):填充描边函数
-drawAtPoint:绘制制定点
-drawInRect:将图片绘制在制定的矩形中
-drawAsPatternInRect:在制定举行里面平铺绘制图片,如果大小超出范围与-drawAtPoint方法类似,当范围小于制定矩形时会出现平铺
-drawAtPoint:withAttributes:在文本指定点绘制
-drawInRect:withAttributes:文本在指定矩形内绘制
Quartz绘制
图形上下文:
当绘制系统执行后,绘制命令所需要的信息,定义了包含各种参数,如绘制使用的颜色、裁切区域、线段的宽度及风格、字体、合成选项等。
Quartz路径:
用来描述矩形、圆及其想要画的2D几何图形。通过路径可以对图形进行描边、填充和描边填充处理。CG的四个基本图元:点、直线、弧、贝赛尔曲线。
Quartz坐标变换:
坐标系:Quartz的坐标系与UIKit坐标系不同,前者原点在左下角,后者时左上角。
2D图形的基本变化:平移、缩放、旋转
CTM变化矩阵:CTM为当前变换矩阵(current transformation matrix)。
仿射变换(affine):可以进行重用变换,经过多次变换(多次矩阵相乘),每一种变换都可以使用矩阵来表示。