一、UIView简介
1. UIView 基础
1)任何 UIView 对象或其子类对象都是可以显示在屏幕上的,即 MVC 设计模式中的 视图
2)每一个 UIView 对象或其子类对象都知道如何绘制自己到屏幕上
3)因为 UIView 继承 UIResponder,所以可以处理事件,和用户交互
2. UIView 层次结构
1)视图会按层次结构排列,位于视图顶层的是应用窗口,即 UIWindow 对象
2)每个应用有且只有一个 UIWindow 对象,UIWindow 负责包含所有的 视图
3. UIView 对象的绘制
1)视图层次结构形成后,系统会将其系那是到屏幕上,可以分为两步
a. 层次结构中的每个视图对象分别绘制自己(包括 UIWindow 对象);每个 UIView 对象都有一个 layer 属性,指向一个 CALayer 对象,视图会将自己绘制到图层(layer)上
b. 所有视图的图层组合成一幅图像,绘制到屏幕上
例如 : 计算器绘制到屏幕上,如下
二、UIView分类——UIViewGeometry
1. 保存视图的大小和相对于父视图的位置
@property(nonatomic) CGRect frame;
2. 保存视图的大小和相对于本视图的位置;默认是 frame 的大小,坐标是 0
@property(nonatomic)CGRect bounds;
3. 保存视图的中点坐标;是 frame 的中点
@property(nonatomic)CGPoint center;
4. 保存视图的缩放、旋转、位移属性;
@property(nonatomic)CGAffineTransform transform;
// CGAffineTransform 结构
struct CGAffineTransform {
CGFloat a, b, c, d;
CGFloat tx, ty;
};
typedef struct CGAffineTransform CGAffineTransform;
a、b——放大、缩小
c、d——选择旋转角度
tx、ty——平移
5. 界面与屏幕的缩放比例;默认为 1
@property(nonatomic) CGFloat contentScaleFactor
6. 设置视图是否支持多点触控;默认为 NO
@property(nonatomic,getter=isMultipleTouchEnabled) BOOL multipleTouchEnabled