一、如何用代码来使用UIView?
首先创建一个singleview,然后我们就可以在ViewCotroller.m文件中的ViewDidLoad函数中进行书写。代码如下:
【1】设置UIview界面
UIView *view1 =[[UIView alloc]init]; //实例化一个view1
view1.frame = CGRectMack(100,110,50,60); //位置大小,其中以主屏左上角为原点,横向为X轴,竖向为Y轴。则100为x坐标,110为y坐标,50和60分别代表视图的宽、高
view1.backgroundColor = [UIColor redColor]; //设置背景颜色
[self.view addSubview:view1]; //将视图加入父视图中,self.view为view1的父视图
【2】不同的方法打印相应位置及大小
NSLog(@"view1's frame : x:%f y:%f w:%f h:%f ",view1.frame.origin.x,view1.frame.origin.y,view1.frame.size.width,view1.frame.size.height);
//打印view1的位置及大小
NSLog(@"view1's bounds : x:%f y:%f w:%f h:%f ",view1.bounds.origin.x,view1.bounds.origin.y,view1.bounds.size.width,view1.bounds.size.height);
//打印view1的大小,因为bounds表示边框的大小,所以其打印出来的x、y永远为0
NSLog(@"view1's center: x:%f y:%f",view1.center.x,view1.center.y);
//打印view1的中心点
【3】调用父视图
UIView *superView = view1.superview; //调用父视图
superView.backgroundColor = [UIColor greenColor]; //设置父视图背景颜色
UIView *view2 =[[UIView alloc]init]; //实例化一个view2
view2.frame = CGRectMack(150,150,10,10); //坐标是根据父视图的位置来设置的,不会跨层
view2.backgroundColor = [UIColor blackColor]; //设置背景颜色
view2.tag = 2; //使用tag属性,设置唯一标识
[view1 addSubview:view2]; //将视图加入父视图中,self.view为view1的父视图
【4】调用子视图。这里介绍两种方法:
===================================<1>=============================================
NSArray *subViewsArray = view1.subviews; //调用子视图,因为一般子视图会有多个,所以采用数组形式
for(UIView *view in subViewsArray){
if(view.tag == 2)
view.backgroundColor = [UIColor whiteColor];
} //这里我们将实现对子视图的遍历,并且当tag值为2的时候,将其背景颜色设置成红色
===================================<2>==============================================
UIView *subView = [view1 viewWithTag:2]; //view1为其父视图,调用tag=2的子视图
【5】层级的处理
1.同一个父视图,先加入的view会被盖在下面;
2.子视图是根据父视图进行层级遮挡,如果父视图层级低于其他同级视图则父视图的子视图也会被遮挡,但是子视图和其他视图中的子视图是没有关系的;
3.交换两个层的视图时必须注意填写正确的层数,如果为不存在的层数,则该交换无效。而层数为先加入的从0开始,后加入的逐一递增;
4.当层交换了之后,对应的子视图的数组下标也会进行改变。
a.交换两个层的视图,代码如下:
[view1 exchangeSubviewAtIndex:0 withSubviewAtIndex:1]; //第0层与第1层进行交换
b.插入视图到指定层,代码如下:
UIView *view4 =[[UIView alloc]init];
view4.frame = CGRectMack(200,200,50,50);
view4.backgroundColor = [UIColor orangeColor];
[view1 insertSubview:view4 atIndex:3]; //将view4插入到第3层
或者:
[view1 insertSubview:view4 aboveSubview:view2];//将view4插入到view2上面,同理,加在下面也是一样的
c.将一个view放入最顶层或最底层,代码如下:
//放入最顶层
[view1 bringSubviewToFont:view2];
//放入最底层
[view1 sendSubviewToBack:view2];
【6】自适应
UIView *backview =[[UIView alloc]init];
backview.frame = CGRectMack([UIScreen mainScreen].bounds.size.width/2-25,400,50,50); //根据主屏的宽度进行设置视图的位置
backview.backgroundColor = [UIColor yellowColor];
//准许子视图自适应
backview.autoresizesSubviews=Yes;
[self.view addSubview:backview];
UIView *topview =[[UIView alloc]init];
topview.frame = CGRectMack(10,10,30,30); //根据主屏的宽度进行设置视图的位置
topview.backgroundColor = [UIColor greenColor];
//设置子视图的适应方式
topview.autoresizingMask = UIViewAutoresizingFlexibleLeftMagin;//准许左侧改变,同理,还有准许右侧改变等等
或者:
//设置右侧和左侧都可以进行改变,其他同理
topview.autoresizingMask = UIViewAutoresizingFlexibleLeftMagin | UIViewAutoresizingFlexibleRightMagin; //注意这里只有一个竖杠
[backview addSubview:topview];
二、各代iphone的屏幕大小及分辨率
3GS 3.5寸 320*480 @1x
4/4s 3.5寸 320*480 @2x 640*960
5/5c/5s 4寸 320*568 @2x 640*1136
6 4.7寸 375*667 @2x 750*1344
6plus 5.5寸 414*736 @3x 1242*2208
那么如何用代码来打印屏幕的大小呢?代码如下:
NSLog(@"w: %f h:%f" , [[UIScreen mainScreen]bounds].size.width , [[UIScreen mainScreen]bounds].size.height);
注意:状态栏高度为20px,我们在设置空间的frame值时需要让出20px
UIView *view2 =[[UIView alloc]init]; //实例化一个view2
view2.frame = CGRectMack(150,150,10,10); //坐标是根据父视图的位置来设置的,不会跨层
view2.backgroundColor = [UIColor blackColor]; //设置背景颜色
view2.tag = 2; //使用tag属性,设置唯一标识
[view1 addSubview:view2]; //将视图加入父视图中,self.view为view1的父视图