UI(一)窗口、视图
iOS:苹果移动设备的操作系统
UIKit->里面包含了所有可以看的见得视图控件
UIWindow:
UIView:
UIWindow:窗口->iOS应用程序中 只能有一个主窗口
☆☆☆☆☆ 有 并且只能有一个主窗口
UIWindow 是用来显示承载 可以看到的控件的 容器
UIWindow?容器->所有控件都是一层层 添加到窗口上的
UIWindow 初始化
initWithFrame构造方法->在创建一个对象的时候 同时给他一个Frame
获取屏幕边境范围:[UIScreen mainScreen].bounds
UIView:?是一个视图 -> 是所有视图类的父类
UIWindow 也属于 视图
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
ViewController *vc = [[ViewController alloc] init];
self.window.rootViewController = vc;
self.window.backgroundColor = [UIColor brownColor];
makeKeyAndVisible 让窗口 是主窗口 并且 显示在屏幕上
[self.window makeKeyAndVisible];
1、 视图的创建
UIView *view = [[UIView alloc] init];
视图的位置 和 自身大小
frame - 位置
屏幕上 是有很多像素点组成
视图的起始位置:origin
窗口的起始位置:是左上角(0,0)
所有子视图 都是根据 origin(原点、起始点) 来定义起始位置
size-> 尺寸 视图本身的大小
frame 是视图中的一个属性
CGRect:
/*
CGRect frame;
CGPoint point = frame.origin;
point.x = 0;
point.y = 0;
CGSize size = frame.size;
size.width = 200;
size.height = 200;
*/
// view.frame = CGRectMake(0, 0, 200, 200);
// 背景颜色
// UIColor -> 颜色类 -> 创建的对象 是一种颜色
// UIColor *bule = [UIColor blueColor];
// view.backgroundColor = bule;
// view.backgroundColor = [UIColor blueColor];
// 设置 视图透明度
// 0.0(完全透明《所有属性方法 类似被禁用》) - 1.0(不透明)
// view.alpha = 0.5;
// hidden:隐藏 YES:隐藏 NO:显示
// hidden 默认值是NO 不隐藏
// view.hidden = YES;
// NSLog(@"%d",view.isHidden);
// 图层之间的关系
// 视图 是 一层层 叠加到一个父视图上的
// 父视图 子视图
// 父视图 是一个承载体
// 子视图 是父视图里面的一个元素
// 父视图的位置发生改变 子视图 也会跟随 父视图位置 一起改变
// CGRectMake(原点 x, 原点 y, CGFloat width, CGFloat height)
// 在同一个父视图中
// 1、view1 移动到最上面
[self.window bringSubviewToFront:view1];
// 把一个视图 移动到底下
// 2、把view2移动到下一层
[self.window sendSubviewToBack:view2];
// 交换两个视图的位置
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2
// subviews(所有子视图组成的数组) 数组->
self.window.subviews
NSLog(@"%@",self.window.subviews);
// 初始化视图的顺序 就是把视图存放到subviews这个数组里面的顺序
// 改变视图的顺序 就是在改变 subviews 数组里面元素的位置
UIView *view = self.window.subviews[2];
NSLog(@"%@",view);
[self.window exchangeSubviewAtIndex:2 withSubviewAtIndex:1];
// 插入一个视图 到另一个视图的上面
UIView *insertView = [[UIView alloc] initWithFrame:CGRectMake(80, 250, 80, 80)];
insertView.backgroundColor = [UIColor grayColor];
[self.window addSubview:insertView];
// 插入insertView 到view1上面
1.[self.window insertSubview:insertView aboveSubview:view1];
2.[self.window insertSubview:insertView atIndex:2];
// 插入到哪一个视图的底下
[self.window insertSubview:insertView belowSubview:view1];
// tag:标记 标签 标号 -> 同一个父视图里面的 身份证号
insertView.tag = 100;
// 可以通过tag值 在他的父视图上找到 这视图
// viewWithTag: 在一个父视图上面 查找有没有tag值是多少的 视图
UIView *v = [self.window viewWithTag:100];
// v 就是insertView
v.backgroundColor = [UIColor redColor];
// NSLog(@"%f",v.alpha);
// 移除视图
[v removeFromSuperview];
// frame: 是根据他的父视图 来定义 这个视图自身位置的(原点)
// 定义frame 不要超出 父视图的范围
// 超出部分 将不再接收任何响应事件
// center 中心点 对角线的交点
// center.x = 宽/2+原点的x
// center.y = 高/2+原点的y
// NSLog(@"view1.center.x:%f",view1.center.x);
// view1.center = CGPointMake(150, 200);
// 改变中心点 可以改变视图的位置
// 只能使用frame 在创建视图的时候 给他一个位置
// 相对于自身的位置 原点永远是(0,0)
// bounds 自身的边境范围
// view1.bounds
// NSLog(@"%f",view1.bounds.size.width);
// bounds用途 是获得视图的宽高 忽略原点
// 定时器 隔多少秒 去做某件事
// NSTimer 定时器的类
// 定时器 初始化
// Interval:间隔(时间间隔) 单位是秒
// selector:方法选择器->用来选择一个方法去执行
// repeats:重复
// target:让谁去执行
// 隔1秒 执行一次start 重复执行
// [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(start) userInfo:nil repeats:YES];
// ☆☆☆☆☆添加到父视图->如果没有这个方法 创建的视图 将不会被显示在屏幕上
// [父视图 addSubview:要添加的视图];
// [self.window addSubview:view];
/*
回顾:
1、UIWindow : 是用来显示视图的一个窗口 -> 显示内容的容器
2、UIView: 是视图 所有视图都是基于UIView的
UIView:初始化
UIView *对象名 = [[UIView alloc]initWithFrame:CGRectMake(原点x, 原点y, 视图的宽, 视图的高)];
[父视图名字 addSubView:对象名];
UIWindow初始化:
UIWindow *窗口对象名 = [[UIWindow alloc]initWithFrame:屏幕的尺寸];
屏幕尺寸:[UIScreen mainScreen].bounds
XCODE7.1改动
1、必须 手动让窗口显示
2、如果想操作窗口 必须自己创建 窗口
3、必须添加根视图控制器
[窗口对象名 makeKeyAndVisible];
视图的背景颜色:backgroundColor
表示颜色的类:UIColor
[UIColor whiteColor]
视图的透明度:alpha
视图是否隐藏:hidden 默认值NO
坐标 位置 相关
frame:相对父视图 创建视图 必须使用frame 给他位置
center:相对父视图 视图的中心点 可以改变视图的位置
bounds:相对自己 获得视图本身的大小 原点永远是(0,0)
父视图 子视图:
子视图 是根据 父视图 来定义自己的frame、center
如果父视图 位置发生改变 子视图 也会跟随改变
定时器:通过 时间间隔 执行某个方法
定时器 隔多少秒 去做某件事
NSTimer 定时器的类
定时器 初始化
Interval:间隔(时间间隔) 单位是秒
selector:方法选择器->用来选择一个方法去执行
repeats:重复
target:让谁去执行
隔1秒 执行一次start 重复执行
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(start) userInfo:nil repeats:YES];
*/