UI初级--视图层级管理

@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

     *****/

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





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值