UIView 概念

View的功能

  1. 管理矩形区域里的内容
  2. 处理矩形中的事件
  3. 子视图的管理
  4. 实现动画

结构体 CGPoint CGSize CGRect

1
2
3
4
struct CGPoint {
CGFloat x;
CGFloat y;
};
1
2
3
4
struct CGSize {
CGFloat width;
CGFloat height;
};
1
2
3
4
struct CGRect {
CGPoint origin; //偏移是相对父视图的
CGSize size;
};

基本属性

  1. frame 是CGRect frame的origin是相对于父视图的左上角原点(0,0)的位置,改变视图的frame会改变center
  2. center 是CGPoint 指的是整个视图的中心点
  3. bounds 是CGRect 是告诉子视图本视图的原点位置
  4. 添加子类视图,越晚添加、视图就在越上层

基本界面元素 window、view、screen

  1. UIView

    负责做显示的画布

  2. UIWindow

    继承自UIView,相当于画框

  3. UIScreen

1
2
3
4
5
6
7
8
9
10
CGRect screenBounds = [ [UIScreen mainScreen]bounds]; //返回的是带有状态栏的Rect
CGRect viewBounds = [ [UIScreen mainScreen]applicationFrame]; //不包含状态栏的Rect
//screenBounds 与 viewBounds 均是相对于设备屏幕来说的
//所以 screenBounds.origin.x== 0.0 ; screenBounds.oringin.y = 0.0;
screenBounds.size.width == 320; screenBounds.size.height == 480(或者其他分辨率有所差异)
//所以 screenBounds.origin.x== 0.0 ; screenBounds.oringin.y = 20.0;(因为状态栏的高度是20像素) screenBounds.size.width == 320; screenBounds.size.height == 480
//取得StatusBar的位置和大小
[self.view addSubview:theToolbar];
CGRect statusBarRect = [[UIApplication sharedApplication]statusBarFrame];

方法

  1. 新增加和移除subview
  2. 前后移动一个图层 bringSubviewToFront、sendSubviewToBack
  3. 使用索引index交换两个subview彼此图层关系

    1
    [UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];
  4. NSInteger index = [[UIView subviews] indexOfObject:Subview名称]; //取得Index

  5. 替Subview加上NSInteger 的註记(Tag)好让之后它们分辨彼此

    1
    2
    [Subview setTag:NSInteger];       //加上标记
    [UIView viewWithTag:NSInteger];  //通过标记得到view 返回值为UIView
  6. [UIView subviews] ; //取的UIView下的所有Subview

bounds 和frame关系

图片

  1. frame: 该view在父view坐标系统中的位置和大小。(参照点是,父亲的坐标系统)
  2. bounds:该view在本地坐标系统中的位置和大小。(参照点是,本地坐标系统,就相当于ViewB自己的坐标系统,以0,0点为起点)
  3. center:该view的中心点在父view坐标系统中的位置和大小。(参照电是,父亲的坐标系统)