什么是控件?
- 控件的概念很宽泛,简单的理解为一个容器,这个容器的作用第装东西并把所装的东西呈现出来,一般iOS中界面上所有的展示的元素都可称为控件,如UILabel、UIButton、UIImage等。
控件的继承关系
- UIView属于UIKit框架,下面是UIKit框架下继承关系图,可一窥元素间的继承关系
- UIView是控件的基础类,苹果把所有的控件的基本属性和方法都抽取到UIView类中,那么如UIButton,UILabel等类继承自UIView就拥有了其所有属性及方法。
父控件和子控件的概念
- 控件可以理解为容器,作用就是盛放东西也就是说盛放其他控件,理论上所有的控件都可以盛放其他任意控件,注意的是用xib或者storyboard的方式创建控件就不能随心所欲的盛放所有的东西了,但是用代码创建控件是可以的。
- 父控件:是相对于内部控件来说的,一个相对意义上较大的控件就是其内部控件的父控件。
- 子控件:是相对盛放自己的容器来说的,一个相对意义上较小的控件就是盛放自身容器的子控件。
- 就控制器而言,每一个控制器内部都有一个容器UIView属性:
@property(nonatomic,return) UIView *view
控制器所管理的其他所有控件都直接或者间接的是这个view的子控件
UIView的常见属性
//获得自己的父控件对象
@property(nonatomic,readonly) UIView *superview;
//获得自己的所有子控件对象
@property(nonatomic,readonly,copy) NSArray *subviews;
//控件的ID(标识),父控件可以通过tag来找到对应的子控件
@property(nonatomic) NSInteger tag;
//控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
@property(nonatomic) CGAffineTransform transform;
//控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
@property(nonatomic) CGRect frame;
//控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)
@property(nonatomic) CGRect bounds;
//控件中点的位置(以父控件的左上角为坐标原点)
@property(nonatomic) CGPoint center;
UIView常见方法
//添加一个子控件view
- (void)addSubview:(UIView *)view;
//从父控件中移除
- (void)removeFromSuperview;
//根据一个tag标识找出对应的控件(一般都是子控件)
- (UIView *)viewWithTag:(NSInteger)tag;
UIKit框架坐标系
- 在UIKit中坐标系的原点(0,0)在左上角,X值的正方向是向右,Y的正方向是向下
网友评论