先认识下UIWindow
1.管理和协调应用程序的显示.
2.UIWindow类是UIView的子类,可以看做是特殊的UIView
3.一般应用程序只有一个UIWindow对象.
创建UIWindow对象
//创建一个window,并使其铺满屏幕
_window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds] ];
[_window setBackgroundColor:[UIColor colorWithRed:102/255. green:220/255. blue:61/255. alpha:1.]];
//创建一个视图控制器
ViewController *root = [[ViewController alloc]init];
//设置window的根视图控制器
[_window setRootViewController:root];
//绘制window
[_window makeKeyAndVisible];
什么是UIView
UIView表示屏幕上的一块矩形区域。
它在App中占有绝对重要的地位。
因为iOS中几乎所有可视化控件都是UIView的子类。
负责渲染区域的内容 并且响应该区域内发生的触摸事件。
UIView功能
管理矩形区域里的内容
处理矩形区域中的事件
子视图的管理
实现UIView动画
UIView作为父类,子类也具有这些功能
创建一个UIView
#warning 创建控件第一步,申请内存空间并初始化
UIView *view = [[UIView alloc]init];
#warning 第二步,设置坐标大小
[view setFrame:CGRectMake(90, 90, 80, 80)];
#warning 第三步,设置控件属性
[view setCenter:self.window.center]; //中心点
#warning 第四步,添加子视图
[self.window addSubview:view];
[view release];
frame的重要性
frame是UIView的重要属性,是我们用于视图布局的关键。 它决定了视图的大小和位置。
frame是CGRect类型。
frame是基于它父视图的坐标系而言的。
UIView常用属性
运用
[view setCenter:CGPointMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2)]; //放中间
[view setAlpha:0.5];
[view setHidden:NO];
[view setTag:1];
//tag,相当于给视图做一个标记,可以通过父视图调用viewWithTag方法获取到视图的对象
UIView *newView = [self.window viewWithTag:1];
[newView setBackgroundColor:[UIColor magentaColor]];
父视图与子视图
使用addSubview:添加视图,要确定添加到谁上面。
被添加的视图称为子视图,添加到的视图称为父视图。 例如:A视图 addSubview: B视图,A为B的父视图,B为A的子视图。
添加视图的方法
[self.window insertSubview:view4 aboveSubview:view3]; //给window视图上面插入一个子视图 把它放在谁的上面
//将父视图中的子视图移动到最前面,位置不会变
[self.window bringSubviewToFront:view3];
//将父视图中的子视图移动到最后面,位置不会变
[self.window sendSubviewToBack:view2];
//交换两个指定索引位置的子视图
[self.window exchangeSubviewAtIndex:1 withSubviewAtIndex:4];
//将子视图从父视图上移除(完全移除 要拿回来要重新添加)
[view removeFromSuperview];
[self.window addSubview:view];
视图层次管理
bounds
当一个视图被创建以后会根据父视图坐标系确定自己的位置大小
同时会生成一套以自己左上角为原点坐标的坐标系
bounds就是该视图在自己这套坐标系中的位置以及大小.
bounds只会影响自身视图的位置
假如父视图将自己的坐标bounds为20,20 那么如果原来和它对齐的子视图想和它对其就要将坐标改为20,20 但是父视图改了坐标对它是没有影响的 只是对子视图有影响
它改为20,20 其实就是将0,0(假设它叫这个名字)改个名字
马赛克练习
_window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
[_window setBackgroundColor:[UIColor cyanColor]];
ViewController *root = [[ViewController alloc]init];
[_window setRootViewController:root];
[_window makeKeyAndVisible];
for (float y = 0; y <= UIScreen.mainScreen.bounds.size.height; y += UIScreen.mainScreen.bounds.size.height/8.0) {
for (float x = 0; x <= UIScreen.mainScreen.bounds.size.width; x += UIScreen.mainScreen.bounds.size.width/5.0) {
UIView *a = [[UIView alloc]initWithFrame:CGRectMake(x, y, [[UIScreen mainScreen]bounds].size.width/5.0, [[UIScreen mainScreen]bounds].size.height/8.0)];
[a setBackgroundColor:[UIColor colorWithRed:arc4random()%255 / 255. green:arc4random()%255 / 255. blue:arc4random()%255 / 255. alpha:0.9]];
[self.window addSubview:a];
[a release];
}
}
总结:
1.UIWindow的作用以及创建
2.UIView的作用及创建
3.UIView的frame以及bounds的作用
4.UIView视图添加方法,视图层次管理方法,常用属性
5.iOS程序启动流程
第一天学习UI 这是ios的重中之重,很多人很多实例告诉我们,在UI时期没有什么好得学习方法就只有疯狂的练习,一段简单的代码也要打很多遍!!!!共勉