UIView —— 所有控件的载体
来源:互联网 发布:python random.choice 编辑:程序博客网 时间:2024/04/30 08:59
一、如何用代码来使用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的父视图
0 0
- UIView —— 所有控件的载体
- 移除UIView上的所有控件
- UIView的基本控件
- 游戏感:虚拟感觉的游戏设计师指南——第十章 载体的测量方法
- 浅谈感染载体1——1.感染目标系统的方式
- .Net单元测试(二)——XML数据载体的优势与实际应用
- Android消息机制源码解析(一)——消息的载体Message
- 采用静态文本控件(CStatic)作为的波形曲线控件的显示载体
- iOS开发:常用的UIView控件——UILabel、UITextField、UIButton
- iOS开发:常用的UIView控件——UILabel、UITextField、UIButton【转】
- 进程间数据传递载体——Parcel(一)
- 进程间数据传递载体——Parcel(二)
- uiview删除自身先前所有的手势
- iOS-获取UIView的所有层级结构
- UIView的 所有属性了全面了解
- 遍历UIView的所有子视图
- iOS 复制UIView所有的对象
- 我们是科技的载体
- App installation failed A valid provisioning profile for this executable was not found.
- C++的数组和指针
- Android 待机功能流程分析
- iOS上传错误 ERROR ITMS-90049 立即解决方法
- Fragment的构造函数
- UIView —— 所有控件的载体
- Boot strap 垂直居中
- 房屋中介信息管理平台
- Linux memcached安装
- const T、const T*、T *const、const T&和const T*&的区别
- SelectionSort -- 选择排序(C++)
- Android Studio 学习笔记
- C++ primer 学习笔记——迭代器
- MAC 下 安装 MAMP的PHP redis扩展