一,view basics
1,基类UIView
2,view提供渲染和事件的功能
3,每个view都存在一颗view树中,它的最底部是UIWindow
二,view树
1,每个view都会渲染到它对应的layer(CALayer),这个layer相对于一块buffer
是否正确?是否layer只是一块逻辑Buffer?
2,最终所有的layer会合成一张到屏幕上
三,view and frame
1,UIView的frame提供view的大小和相对于父组件的位置,类型为CGRect;
使用CGRectMake创建一个CGRect
2,backgroundColor设置view的背景
view.backgroundColor = [UIColor redColor];
四,自定义渲染
1,override drawRect:方法
2,渲染区域是类型为CGRect的bounds对象,它基于view本身的坐标系系统,而frame是相对于父组件的坐标系系统
3,使用UIBezierPath类设置绘制圆
4,通过UIBezierPath的lineWidth设置线宽
5,通过UIColor设置线的颜色值,其实它是状态机
6,通过UIBezierPath的stroke来进行path的绘制
五,2D渲染库Core Graphics,类似于android的skia
1,用c语言实现的2D渲染库, 模拟面向对象的方式实现
2,它最重要的2个“对象”:渲染context以及渲染buffer
3,ARC内存管理机制无法管理CG对象,所以要自己管理内存
六,绘制阴影和颜色渐进
1,目前上层没封装实现,所以必须使用CG库
2,添加阴影和渐进实际上是添加绘制状态
3,context可以保存和恢复,这点和opengl状态机类似,实际上context本质上就是状态机