UIKit框架 ->包含了所有可以看的见得视图控件
***UIKit框架其中UIWindow:窗口控件 -> ios应用程序里面只且只有一个主窗口*** 4,是用来显示承载可看到的控件的容器(因为所有的控件都是一层层添加到窗口上的)
UIWindow的初始化:initWithFrame构造方法:在创建一个对象的时候,同时给它一个Frame。
UIWindow *window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
UIView:?是一个视图,类似于NSObject,是所有视图类的父类。UIWindow也是视图。
/Users/scjy/Desktop/UI - NO.1 霓虹灯/UI - NO.1 霓虹灯/ViewController.m
UIKit框架其中UIView:
*/
// initWithFrame构造方法:在创建一个对象的时候,同时给它一个Frame ,获取屏幕边境范围:[UIScreen mainScreen].bounds ,
// ⭐️⭐️⭐️⭐️⭐️⭐️⭐️self.window在.h中可见???⭐️⭐️⭐️⭐️⭐️⭐️
self.window = [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
ViewController *vc = [[ViewControlleralloc]init];
// 根视图控制器
self.window.rootViewController = vc;
// 此处设置父视图背景颜色
self.window.backgroundColor = [UIColorwhiteColor];
// ⭐️⭐️⭐️⭐️⭐️⭐️让window显示的方法:makeKeyAndVisible让窗口是主窗口 并且是显示在手机屏幕上,必须自己创建窗口,必须添加根视图控制器
[self.windowmakeKeyAndVisible];
/*
// 1.视图的创建,视图有很多类,UIView是其中一个
UIView *view = [[UIView alloc]init];
// 视图的位置和 自身大小
// ⭐️⭐️frame -是视图的属性,位置及长宽高⭐️⭐️
// 屏幕上是由很多像素点组成
// 视图的起始位置是:origin,窗口的起始位置是:左上角(即坐标为0,0),所有子视图都是根据 origin(原点)来定义起始位置的
// size:尺寸是视图本身的大小
// CGRect:结构体方式赋值太麻烦了,直接用CGRectMake方法
view.frame = CGRectMake(0,0, 200, 200);
// 视图的背景颜色设置,UIColor自带表示专门的颜色类,创建的一种对象就是颜色
// UIColor *bule = [UIColor blueColor];
view.backgroundColor = [UIColor blueColor];
// 设置视图透明度:0.0(完全透明【所有属性方法,类似于被禁用即事件无响应)到1.0(不透明)
view.alpha = 0.414;
// hidden:隐藏的意思 , BOOL类型,只有YES隐藏,NO显示即 hidden 的默认值
// view.hidden = YES;//view被隐藏
// isHidden相当于getter方法
NSLog(@"%d",view.isHidden);
// 图层之间的关系
// 视图是一层层叠加到一个 父视图上的,子视图是被添加到父视图这个载体上的,父视图位置改变,子视图也跟着改变
// ⭐️⭐️⭐️⭐️⭐️添加视图到父视图⭐️⭐️⭐️⭐️⭐️如果没有此方法,创建的视图将不会被显示在屏幕上
// 公式:[父视图 addSubview:要添加的视图];
[self.window addSubview:view];
UIView *view1 = [[UIView alloc]init];
view1.frame = CGRectMake(210, 210, 100, 100);
view1.backgroundColor = [UIColor redColor];
[self.window addSubview:view1];
// UIWindow的初始化:initWithFrame构造方法:在创建一个对象的时候,同时给它一个Frame以及原点和长宽,原点是子视图的左上方
UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];
view1.backgroundColor = [UIColor cyanColor];
[self.window addSubview:view1];
UIView *view2 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
view2.backgroundColor = [UIColor orangeColor];
// frame:是根据他的父视图来定义这个视图自身位置的原点,定义frame不能超出父视图的范围,超出部分将不再接收任何响应事件
[view1 addSubview:view2];
// center 中心点对角线的交点
// center.x = 宽/2 +原点的x ; center.y =高/2 + 原点的y,系统默认知道中心点
NSLog(@"%.1f",view1.center.x);
NSLog(@"%.1f",view1.center.y);
// center 可改变子视图的位置,但不能在创建视图时使用
view1.center = CGPointMake(150, 200);
// bounds 相对于自身的位置,忽略原点,原点永远是(0,0),可获得视图自身的边境范围,只是用来获得宽和高的
NSLog(@"%.2f",view1.bounds.origin.y);
NSLog(@"%.2f",view1.bounds.size.height);
// 定时器:隔多长时间去做什么事
// NSTimer 定时器的类
// 定时器初始化的方法
// Interval:表示时间间隔,单位是秒 target:让谁去执行 selector:方法选择器,用来选择一个方法执行 userInfo:需要传的值 repeats:重复次数
[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(start) userInfo:nil repeats:YES];
*/
UIView *view1 = [[UIViewalloc]initWithFrame:CGRectMake(100,200, 200, 200)];
view1.backgroundColor = [UIColororangeColor];
[self.windowaddSubview:view1];
UIView *view2 = [[UIViewalloc]initWithFrame:CGRectMake(50,300, 300, 200)];
view2.backgroundColor = [UIColorpurpleColor];
[self.windowaddSubview:view2];
// 在同一个父视图中 1.view1移动到最上面
// [self.window bringSubviewToFront:view1];
// 2.把一个视图移动到相邻视图的底下,把view2移动到下层
// [self.window sendSubviewToBack:view2];
// 3.交换两个视图的位置
// - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;
// subviews是一个数组,所有子视图组成的数组,初始化视图的顺序就是把视图存放在,包括window这个父视图。
// subviews这个数组里面的顺序,改变视图的顺序就是改变数组里元素的位置,最下面的视图是数组中下标为0的元素视图
NSLog(@"%@",self.window.subviews);
UIView *view = self.window.subviews[0];
NSLog(@"%@",view);
// 交换视图位置
[self.windowexchangeSubviewAtIndex:2withSubviewAtIndex:1];
// 插入某视图到另一个视图的上面
UIView *insertView = [[UIViewalloc]initWithFrame:CGRectMake(80,250, 80, 80)];
insertView.backgroundColor = [UIColorgrayColor];
[self.windowaddSubview:insertView];
// [self.window insertSubview:insertView aboveSubview:view1];
// [self.window insertSubview:insertView belowSubview:view1];
// [self.window insertSubview:insertView atIndex:2];
//⭐️⭐️⭐️⭐️tag:标记,标签,标号 -> ⭐️⭐️同一个父视图里的身份证号,可通过tag值在它的父视图 上找到这个视图⭐️⭐️
insertView.tag = 100;
// viewWithTag:在同一个父视图上面查找有没有tag值是多少的视图
UIView *v = [self.windowviewWithTag:100];//此时视图v即视图insertView
v.backgroundColor = [UIColorgreenColor];
// 移除视图的:从父视图上移除v
[v removeFromSuperview];