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];
}

發佈了34 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章