UI概述
UI(User Interface): 用户能看到的各种个样的页面元素
iOS App = 各种各样的UI控件 + 业务逻辑和算法
UIWindow
window是窗口,使用UIWindow类来表示窗口,通常一个应用程序只创建一个UIWindow对象
通常window的大小(frame)与屏幕(UIScreen)大小一致
// 示例
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIView
view(视图): 代表屏幕上的一个矩形区域iOS中用UIView表示视图,各种UI控件都属于view,不同的控件代表不同种类的view,iOS中所有能看到的内容都是view或其子类
// 创建视图的步骤
// 1.开辟空间并初始化视图(初始化时,给出视图的位置和大小)
UIView *view = [[UIView all] initWithFrame:CGRectMake(100, 100, 100, 100)];
// 2.对视图做一些设置(比如: 背景颜色)
[view setBackgroundColor:[UIColor blueColor]];
// 3.将视图添加到window上进行显示
[self.window addSubview:view];
// 4.释放视图对象
[view release];
iOS坐标系
iOS提供了用于布局的平面坐标系。左上角为坐标系的原点。
水平向右:为x的正方向。屏幕最左到最右可划分320等份。
垂直向下:为y的正方向。屏幕最上到最下可划分480等份(3.5寸)或568等份(4.0寸)。
坐标系不是以像素作为划分依据,而是以“点”作为依据。
// frame是一个结构体,包含2部分内容:origin和size
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
// origin也是一个结构体,包含2部分内容:x和y
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
// size同样是一个结构体,包含2部分内容:width和height
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
// frame的origin和size是相对于父视图来说的。
// CGRectMake()函数可以帮我们快速的构造一个CGRect变量
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height){
CGRect rect;
rect.origin.x = x;
rect.origin.y = y;
rect.size.width = width;
rect.size.height = height;
return rect;
}
center
center(中⼼点)也是view重要的属性。
center是个结构体,包含2个部分:x和y。
center与frame有着密切的联系。
center.x = frame.origin.x + frame.size.width/2;
center.y = frame.origin.y + frame.size.heigh
bounds
bounds(边界)也是view的重要属性,⽤于定义⾃己的边界。
它同frame⼀样是⼀个CGRect结构体变量。
当⼀个view设置bounds时,会把⾃己当成⼀个容器,定义⾃己的边界⼤小以及相对坐标原点的偏移量。
当⼦视图添加到此视图时,会根据bounds指定的原点计算frame。
center和bouns
center参考系:父视图; bounds参考系:自身
center发生变化bounds.origin不变,bounds.origin发生变化center不变
添加视图
insertSubview:atIndex: 在指定的index处插入子视图
insertSubview:aboveSubview: 在指定的视图上面添加子视图
insertSubview:belowSubview: 在指定的视图下面添加子视图
bringSubviewToFront: 把指定的子视图移动到最前面
sendSubviewToBack: 把指定的子视图移动到最后面
exchangeSubviewAtIndex:withSubviewAtIndex: 交换两个指定索引位置的子视图
removeFromSuperview 把receiver从父视图上移除
视图重要属性
hidden 控制视图的显隐 [view setHidden:YES]; // YES隐藏 NO显示
alpha 控制视图的不透明度(子视图也一起透明),取值范围0~1 [view setAlpha:0.8];
superview 获取本视图的父视图 UIView *superView = [view superview];
subviews 获取本视图的所有子视图 NSArray *subViews = [view subviews];
tag 给视图添加标记,被加完标记的视图可以使用viewWithTag:方法取出 [view setTag:100]; UIView *view = [superview viewWithTag:100];