view and view hierarchy

一,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本质上就是状态机







你可能感兴趣的:(view and view hierarchy)