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

UI初级--视图层级管理

2014-04-26 11:06 363 查看
@UI视图的层级管理

UI中几乎所有的可视化控件都是UIView的子类,而且当多个控件或UIView的对象出现在同一个窗口上时,实际上这些控件以及对象之间是具有一定的层级关系的,所以下面简单说下UI视图的层级管理

用编译来举例说明一下:

//首先创建3个不同色块的UIView对象

UIView * blueView = [[UIView alloc]initWithFrame:CGRectMake(60, 60, 100, 100)];

blueView.backgroundColor = [UIColor blueColor];

blueView.tag = 100;

[self.window addSubview:blueView];

[blueView release];

UIView * yellowView = [[UIView alloc]initWithFrame:CGRectMake(80, 80, 100, 100)];

yellowView.backgroundColor = [UIColor yellowColor];

[self.window addSubview:yellowView];

[yellowView release];

//红色视图,作为蓝色视图的子视图,位置在蓝色视图和黄色视图的交集位置

UIView * redView = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];

redView.backgroundColor = [UIColor redColor];

[blueView addSubview:redView];

[redView release];

[self.window bringSubviewToFront:blueView];

[self.window sendSubviewToBack:blueView];

[self.window exchangeSubviewAtIndex:0 withSubviewAtIndex:1];

NSLog(@"subviews = %@",self.window.subviews);

//黄色视图从父视图上移除,子视图执行removeFromSuperview方法.

// [yellowView removeFromSuperview];

NSLog(@"subviews = %@",self.window.subviews);

//viewWithTag不是只能搜索子视图

// UIView * blueView = [self.window.subviews objectAtIndex:0];

UIView * findBlueView = [self.window viewWithTag:100];

NSLog(@"%@",findBlueView);

//设置tag值(标签),是为了能够访问到你所设置tag值的那个视图对象.注:tag值最好设置100+,这样是为了避免和系统内的已有控件所占用的标签相重复

接下来,再创建一个UIView的对象,即一个色块,来演示一下额外的层级管理操作

UIView * cyanView = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];

cyanView.backgroundColor = [UIColor cyanColor];

// [self.window insertSubview:cyanView aboveSubview:yellowView];

[self.window insertSubview:cyanView belowSubview:yellowView];

[self.window insertSubview:cyanView atIndex:0];

[cyanView release];

//隐藏蓝色视图默认是NO

// blueView.hidden = YES;

//修改蓝色视图的透明度默认是1,父视图的alpha会影响子视图

blueView.alpha = 0.2;

//注:透明度的范围:0~1
@用视图来加深UI视图层级管理的理解



@视图层级管理的总结

/*****

1.一个视图作为父视图时,可以添加多个子视图.

2.一个视图作为子视图时,只能有一个父视图.

3.新添加的(后添加的)子视图,永远显示在其他同级的子视图的前面(上面)

4.父视图使用数组管理所有的子视图subViews

5.视图使用树形结构,管理所有子视图

6.父视图可以修改已存在的所有子视图的关系:提前,置后,交换.子视图可以从父视图上移除.以上操作均会影响subViews.

7.父视图可以直接添加子视图.插入子视图:根据索引值,显示在指定子视图上面;显示在指定子视图的下面.

8.viewWithTag:通过tag值搜索本视图及所有子视图.tag值默认为0

*****/
@运行模拟器实现的截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: