UIView控件

UIView

本节小结知识点:

  1. 什么是控件?
  2. 控件的共同属性有哪些?
  3. 父控件、子控件
  4. UIView的常见属性
  5. UIView的常见对象方法
  6. 补充:

1. 什么是控件?

  • 屏幕上的所有UI元素都叫做控件,也有人叫做视图、组件
  • 按钮(UIButton)、文本(UILabel)都是控件

2. 控件的共同属性有哪些?

- 尺寸
- 位置
- 背景色
- ......
  • 苹果将控件的共同属性都抽取到父类UIView中
  • 所有的控件最终都继承自UIView
    • UIButton、UILabel都是继承自UIView(可以查看头文件)

3. 父控件、子控件

  • 每个控件都是个容器,能容纳其他控件

    • 内部小控件是大控件的子控件
    • 大控件是内部小控件的父控件
  • 每一个控制器(UIViewController)内部都有个默认的UIView属性

    @property(nonatomic,retain) UIView *view;
  • 控制器中管理的其他所有控件都是这个view的子控件(直接或者间接)

    • 注意:间接是指子控件的子控件。

4. UIView的常见属性

  • 获得自己的父控件对象

    @property(nonatomic,readonly) UIView *superview;
  • 获得自己的所有子控件对象

    @property(nonatomic,readonly,copy) NSArray *subviews;
  • 控件的ID(标识),父控件可以通过tag来找到对应的子控件(这里一般要结合方法使用)

    @property(nonatomic) NSInteger tag;
  • 控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)

    @property(nonatomic) CGAffineTransform transform;

5. UIView的常见对象方法

  • 添加一个子控件view

    - (void)addSubview:(UIView *)view;
  • 从父控件中移除

    - (void)removeFromSuperview;
  • 根据一个tag标识找出对应的控件(一般都是子控件或间接子控件)

    - (UIView *)viewWithTag:(NSInteger)tag;

    内部查找原理先匹配自己、在匹配子控件(如果子控件又有子控件,则会进入子控件遍历),找到就返回并不在查找
    如果仅仅是为了查找一个控件,不建议使用tag这个方法,这种遍历的形式性能较差,建议定义一个属性变量定义直接查找;

    // 遍历过程,如下伪代码
    //- (UIView *)viewWithTag:(NSInteger)tag
    //{
    // if (self.tag == tag) return self;
    // for (UIView *subview in self.subviews) {
    // if (subview.tag == tag) return subview;
    // }
    // return nil;
    //}

6. 补充:

// 当控制器的view加载完毕后会自动调用这个方法1次
- (void)viewDidLoad{

}
// 当点击控制器的view就会自动调用这个方法
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    // 移除红色的view :removeFromSuperview 把左边的控件从父控件中移除
    // [self.redView removeFromSuperview];
    UIView * redView = [self.view viewWithTag:11];
    [redView removeFromSuperview];
}

你可能感兴趣的:(UI,UILabel,UIView,UIButton,控件)