UIView基础和层级关系

本文探讨了iOS开发中UIView的基础知识,重点在于UIView的层级关系及其画图顺序,即添加顺序决定了视图的绘制顺序。同时提到了通过调整视图在subviews数组中的位置来改变其层级,以及使用`removeFromSuperview`方法移除视图的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    //创建一个UIView对象
    //所有在屏幕上看到的对象,都是它的子类
    //UIView是一个矩形对象,有背景颜色,有层级关系
    UIView * view = [[UIView alloc] init];
    //设置UIView的位置
    view.frame = CGRectMake(100, 100, 100, 200);
    view.backgroundColor = [UIColor blueColor];
    view.backgroundColor = [UIColor orangeColor];
    //将新建试图添加到父亲视图上
    //1.将新视图显示到屏幕上
    //2.将视图作为父亲视图的子视图管理起来
    [self.view addSubview:view];
    view.hidden = YES;
    //alpha = 1不透明
    //alpha = 0 透明
    //alpha = 0.5 半透明;
    view.alpha = YES;
    self.view.backgroundColor = [UIColor blueColor];
    //设置是否显示不透明
    view.opaque = NO;
    //从父视图删除
    //从父视图的管理中删除
    [view removeFromSuperview];

UIView 的层级关系

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    UIView * view01 = [[UIView alloc] init];
    UIView * view02 = [[UIView alloc] init];
    view01.frame = CGRectMake(100, 100, 150, 150);
    view01.backgroundColor = [UIColor blueColor];
    view02.frame = CGRectMake(125, 125, 150, 150);
    view02.backgroundColor = [UIColor orangeColor];
    UIView * view03 = [[UIView alloc] init];
    view03.backgroundColor = [UIColor greenColor];
    view03.frame = CGRectMake(150, 150, 150, 150);

画图顺序是添加顺序

  [self.view addSubview: view01];
  [self.view addSubview:view03];
  [self.view addSubview:view02];
  //调整视图,将view01 调整到最前面
  [self.view bringSubviewToFront:view01];
  //将03调整到最后面。
  [self.view bringSubviewToFront:view03];
}

改变视图的俩个函数都会改变视图在subviews数组里的位置。

//subviews 管理所有self.view子视图的数组。
    UIView * viewFront = self.view.subviews[2];
    UIView * viewBack = self.view.subviews[0];
    if (viewFront == view01) {
        NSLog(@"相等");
    }

同样
[view01 removeFromSuperview]也会将视图从数组中删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值