首页 > 代码库 > UIView
UIView
一个UIView的实例就是一个视图,表示屏幕上的一块矩形区域。
作用 : 负责这块矩形区域的描绘以及和用户的交互。
第一、UIView的可视化属性
1. backgroundColor 背景属性
例如:
//创建UIView对象 bounds编辑
UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 220, self.view.bounds.size.height-100)];
//设置view1的背景颜色
view1.backgroundColor = [UIColorpurpleColor];
2. hidden 表示该view是否隐藏,
hidden属性为YES时视图隐藏,否则不隐藏。
注意事项:
当视图完全透明或者隐藏时,不能响应触摸消息。
也就是alpha等于0.0或者hidden为YES的时候,但是当alpha<0.01的时候,视图就已经接收不到消息了。
视图的alpha值会影响子视图的绘制,但是子视图的alpha值不变。
4.User Interaction Enable: 指定用户能否对此对象操作
5.Multiple Touch:指定此控件是否接收多点触控
第二,管理视图的层次
一个UIView只有一个superview,我们可以通过-(UIView*)superview来得到视图的父视图;
一个UIView有零或者多个superview,我们通过方法-(NSArray*)subviews来得到当前视图的所有子视图,这些子视图
都放在了一个数组中,然后把数组返回出来。
NSArray *arr = self.view.subviews;//得到所有的视图
1. insertSubview:atIndex:插入视图
2.insertSubview:aboveSubview:插入视图在某个子视图的上面
3.insertSubview:belowSubview:插入视图在某个子视图的下面
4.bringSubviewToFront:把子视图放到最前面
5.sendSubviewToBack:把子视图放到最后
6.exchangeSubviewAtIndex:withSubviewAtIndex:变换两个视图的前后顺序
7.removeFormSuperview 从父视图中移除
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //创建一个按钮 UIButton *button=[[[UIButton alloc] initWithFrame:CGRectMake(120, 120, 50, 50)] autorelease]; button.backgroundColor=[UIColor redColor]; [ self .view addSubview:button]; UIButton *button2=[[[UIButton alloc] initWithFrame:CGRectMake(130, 130, 50, 50)] autorelease]; button2.backgroundColor=[UIColor blueColor]; [ self .view addSubview:button2]; [button removeFromSuperview]; |
第三 ,layoutSubviews
layoutSubviews在以下情况下会被调用:
1、init初始化不会触发layoutSubviews
2、addSubview会触发layoutSubviews
3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
4、滚动一个UIScrollView会触发layoutSubviews
5、旋转Screen会触发父UIView上的layoutSubviews事件
6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件
注意:UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿 到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。
宗上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据
第四,tag
属性UIView的所有子类都有此属性,用于开发人员设置额外值,常用于同一方法被多个组件触发。
例如:
//得到当前的触发事件
UIView *tempView = (UIView*)[self.view viewWithTag:1001];
总结:
视图都实添加到界面上才能显示的,每一个视图控制器都有一个属性UIView类型的,就是当前显示的界面,在它的上面我们还可以添加视图。
视图相当于一个容器,可以添加一些其他的视图或控件,这中包含关系我们称之为子父视图的关系,容器视图为父视图,被添加的视图为子视图。
每个视图都有frame和bounds属性,其中包含坐标和大小,frame是相对于父视图坐标系来说的,bounds是相对于自身坐标系来说的。
越早添加的视图越在容器视图的低部,越晚添加的视图越在顶部,即晚加入的视图有可能会覆盖住早加进去的视图。