只要是视图控件 都需要有自己的位置
//初始化一个window
self.window =[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
//UIColor是所有颜色的 大总管(颜色类)
self.window.backgroundColor = [UIColor blackColor];
UIView * view1 = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 50, 30)];
//backgroundColor背景色
view1.backgroundColor = [UIColor brownColor];
//alpha视图透明度属性,默认值是1,也就是完全不透明,透明度是0的时候,就不会在接受任何触发事件
view1.alpha=0.5;
//tag 类似于身份证号码, 可以通过tag 来找到相应的视图(依赖于父视图的,在它的父视图上 通过tag找到这个视图)
view1.tag = 100;
//addSubview 把View1贴到窗口上(父视图上)
[self.window addSubview:view1];
也可以通过for循环来创建视图
用for循环
for (int i=10; i<200; i++) {
UIView *view6=[[UIView alloc]initWithFrame:CGRectMake(10, 30, i, 30)];
view6.backgroundColor=[UIColor whiteColor];
[self.window addSubview:view6];
}
枚举:
struct CGRect {
CGPoint origin;是一个点(原点)起始点
CGSize size; size大小 尺寸 自身的大小 尺寸
};
如何确定视图的位置?
1、Frame 需要一个结构体(CGRect)
Frame是依据它的父视图 来确定自己的位置的
Frame是坐标体系(位置里面的一种) 它是相对于父视图或者硬件设备来获取自己的位置的,(它需要一个参考物来确定自己的位置)
2、bounds 是坐标体系(位置)里面的一种 相对自身来说 也就是 以自己为主 自己的周边范围
//bounds可以设置范围
view1.bounds =CGRectMake(0, 0, 200, 200);
//hidden 默认值是NO 控制 视图是否隐藏 如果是yes ,视图将会被隐藏
view1.hidden = NO ;
//makeKeyAndVisible 让窗口显示 并接收事件(初始化窗口必须要让窗口显示)
[self.window makeKeyAndVisible];
3、如何通过tag值找到视图
//viewWithTag通过这个方法 可以找到 对应tag的视图 在它的父视图上查找
UIView *view = [self.window viewWithTag:100];
//现在这个View就是 咱们查找到得添加在self。window上的view1
UIView详解
UIView:UIView是视图,代表屏幕上的一个矩形区域。各种UI控件都属于View。不同的控件属于不同种类的视图,iOS中所能看到的内容都是UIView或则其子类
*/
//打印设备的bounds(设备的范围)
NSLog(@"宽%f",[UIScreen mainScreen].bounds.size.width);
NSLog(@"长%f",[UIScreen mainScreen].bounds.size.height);
//center 中心点 相对于父视图来说的(如果改变中心点得位置,视图的位置也会发生改变)
view.center = CGPointMake(200, 300);
设置成屏幕的中心
1)、
view.center =self.window.center;
2)、
view.center =CGPointMake([UIScreen mainScreen].bounds.size.width/2, [UIScreen mainScreen].bounds.size.height/2);
3)、3.获取屏幕的高和宽 除2得到屏幕的中心点
view.center = CGPointMake(CGRectGetWidth([UIScreen mainScreen].bounds)/2, CGRectGetHeight([UIScreen mainScreen].bounds)/2);
4)、hidden 是YES的时候,也不会接受任何事件
5)、层间关系:
UIView *bigview= [[UIView alloc]initWithFrame:CGRectMake(100, 100, 200, 200)];
bigview.tag=200;
bigview.backgroundColor=[UIColor yellowColor];
(1)、裁切边境(把超出的部分 剪切掉)
bigview.clipsToBounds=YES;
[self.window addSubview:bigview];
(2)
UIView *view1=[[UIView alloc]initWithFrame:CGRectMake(200, 200,200, 200)];
view1.backgroundColor=[UIColor whiteColor];
[self.window addSubview:view1];
//把哪个视图放在上面(操作两个视图的图层关系时, 两个图层 必须在同一个父视图上面)
//如果两个视图不是同一个父视图 那么他们两个就没有任何关系
1、把某个视图 放到父视图的最上面
[self.window bringSubviewToFront:bigview];
2、把一个视图放到 它相邻视图的最下面
[self.window sendSubviewToBack:bigview];
3、把一个子视图放到另一个子视图的下面
[self.window insertSubview:view1 belowSubview:view];
4、把一个子视图放到另一个子视图的上面面
[self.window insertSubview:view aboveSubview:view1];
5、交换 父视图上面的两个视图的位置
//咱们往同一个父视图上面 添加子视图的时候 系统会自动帮咱们记录一个index 只要添加一个子视图,就会增加1 从0开始
[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:2];
6、把一个视图插到哪个位置
[self.window insertSubview:view atIndex:2];
7、从父视图中 移除视图
[bigview removeFromSuperview];
总结:子视图 依赖于 父视图
如果父视图位置发生改变 子视图位置也会发生改变 因为 fram是根据它的父视图来定义位置信息的
如果移除父视图 父视图上面的所有的子视图 也都会 被移除