- 1都继承了UIView
所以所有控件都可以addsubview另一个控件
还能继承UIView的所有方法,与属性。
如
tag、frame、alpha、背景颜色······ - 2UIControl的子类能移动和点击。
- 3可以自定义控件
可以为控件增加属性和自定义样式
UITextfield不可以换行
UITextView没有PlaceHolder
所有空间都是UI
控件可以交互
- 1三个结构体 CGPoint、CGSize、CGRect
- CGPoint(坐标)
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
看到这个想必你已经懂了,不再解释。
- CGSize(大小)
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
不解释。
3.CGRect(point和size的组合)
struct CGRect {
CGPoint origin; //偏移是相对父视图的
CGSize size;
};
typedef struct CGRect CGRect;
同样 不解释。
结构体的关键字是struct
frame是cgpoint和cgrect的组合结构体
通过addsubview方法添加的视图,越晚添加越放在上层。
这三个结构体均在一个头文件里:CGGeometry.h
center是view的中间
2)视图的最基本属性
frame和center都是相对于父视图的,bounds是相对于自身的
frame 是CGRect frame的origin是相对于父视图的左上角原点(0,0)的位置,改变视图的frame会改变center
center 是CGPoint 指的就是整个视图的中心点,改变视图的center也会改变frame
bounds 是CGRect 是告诉子视图本视图的原点位置(通俗的说就是,子视图的frame的origin与父视图的bounds的origin的差,就是子视图相对于父视图左上角的位置,如果结果为负,则子视图在父视图外)
frame子view在父view中的大小
bounds是参照自身的大小。
通过addSubview:这个方法添加子类,不管谁添加它,只要越晚添加,视图就在越上层
移除父视图也会把它得子视图移除