您的位置:首页 > 产品设计 > UI/UE

UIView —— 所有控件的载体

2015-11-04 15:42 381 查看

一、如何用代码来使用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的父视图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: