1.View层(视图层)
提供用户界面以及用户交互。
绘制、贴图、手势、变形、布局、动画、动力、特效。
2.绘制
2.1 基本概念
1>图像和显示器
显示器有很多显示晶体,每一个显示晶体都发3种颜色的光(红绿蓝),显示器上很多显示晶体。
640*480->1920*1080
2>像素
图片有多少像素,相当于有多少个颜色的点。
保存图片:
1像素由4个数表示(红、绿、蓝、Alpha),共4Byte,表示一个颜色点。
图片的大小=分辨率*4 (bmp)
但现在使用的图片jpg/png,都是经过压缩过的,图片的大小会小些,图像会失真,保持图片的原样,要使用bmp。
3>图像
内存中保存图像有两种方式:
位图(点阵图)RGB图片,照片等都使用二进制数位图。
矢量图,保存的不是点阵的数据,而是数学公式,函数等,点、线、面几何形状,阴影放大缩小不会失真。
2.2 如何绘制图形
绘制矢量图、绘制位图
2.2.1 绘制图形的API
UIKit Framework OC语言 API
+ Core Animation C语言 API
+ Core Graphics C语言 API
+ System(IOS)
2.2.2 在哪写绘制代码
在视图的类中写
UIView —> drawRect 会在视图显示前自动调用
类似于UIViewController —>ViewDidLoad
视图类的绘制代码要写在drawRect方法中,此方法是自动调用的。
如同不能主动调用VC中的viewDidLoad方法一样, 我们也不能主动调用View中的drawRect方法。
2.2.3 如何绘制
(1)找一个画板 *得到上下文
(2)勾勒形状 增加路径
(3)调色 设置颜色
(4)上色 开始画
图形上下文(Graphics Context):保存绘图信息、绘图的状态、决定绘制的输出目标。
绘制好一个图形(保存)->图形上下文(显示)->输出目标
可以输出Bitmap、PDF、Window、Layer、Printer
3.UIBezierPath类 贝赛尔曲线
3.1 是什么
对底层Core Graphics的一部分常见的绘制api的封装类
3.2 干什么
能让我们按照面向对象的方式绘制图形、直线、曲线、圆、扇形、多边型等。
3.3 使用
使用与C中的函数库相类似的四步
3.4 重要属性
.lineWidth 线宽
.lineCapStyle 线头风格
.lineJoinStyle 连线风格
3.5 如何画圆弧
参数1 中心点位置 圆心 参数2 半径
参数3 开始的弧度角度 参数4 结束的弧度角度
参数5 顺时针 逆时针
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(160, 200) radius:80 startAngle:0 endAngle:M_PI_2 clockwise:YES];
2*M_PI 圆
M_PI_2 四分之一圆
3.6 定义视图
一个下载标记视图,圆形进度条。
A.计算弧度:
*起始弧度位置 M_PI_2*3
*结束弧度位置 self.value*(M_PI*2)+M_PI_2*3
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(160, 200) radius:80 startAngle:M_PI_2*3 endAngle:self.value*(M_PI*2)+M_PI_2*3 clockwise:YES];
B.传值的过程
slider的值->slider的事件方法->自定义View->属性value(自己写代码通知视图刷新)->计算弧度方法并显示
视图刷新:
<1>重新了属性的Setter方法
<2>调用属性的Setter方法改变值时,要刷新自定义视图。
[self setNeedsDisplay];