美文网首页
3.2 视图的层级关系

3.2 视图的层级关系

作者: 草根小强 | 来源:发表于2019-04-08 21:04 被阅读0次

视图的层级关系

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self AboutUIView];
}

#pragma mark - 视图的层级关系
/*
 //把子视图放到指定的位置  //位置大于最高层次  则会在最高层
 - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;//在某个位置插入某个视图
 - (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;//交换两个视图的位置
 
 - (void)addSubview:(UIView *)view;//添加视图
 - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;//把视图放到哪个视图之下(兄弟视图)
 - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;//把视图放到哪个视图之上(兄弟视图)
 
 - (void)bringSubviewToFront:(UIView *)view;
 - (void)sendSubviewToBack:(UIView *)view;

 */
- (void)AboutUIView{

    NSArray *colors = @[[UIColor redColor],[UIColor yellowColor],[UIColor blueColor]];// 100  101 102
    
    for (int i = 0; i<3; i++) {
        UIView *v = [[UIView alloc] initWithFrame:CGRectMake(50+i*20, 60+i*30, 100, 80)];
        v.tag = 100+i;
        [self.view addSubview:v];
        v.backgroundColor = colors[i];
    }

    [self.view exchangeSubviewAtIndex:0 withSubviewAtIndex:1];//将数组中的第1个位置即clolors[0]和第二个位置即color[1]的视图调换位置,数组都是从0开始数起,大于数组的最大值则调换无效果,保持原状。 
    
    
    
    //获取self.view的所有的子视图
    NSArray *sub = self.view.subviews;
    for (UIView *v in sub) {
        NSLog(@"---%ld",v.tag);// tag值w:---0,---0,---100,---101, ---102  因上面视图第一个和第二个交换位置 但因两个是白色颜色 所以依旧是红,黄,蓝
    }
//
//    
//    //改变子视图的层级关系
//    //将指定的子视图放到最前面
    //将排列的第二张放到最前面 也就是第二张图片放到最前面
    [self.view bringSubviewToFront:sub[2]]; //将第三个视图放到最前面,所以是 黄  蓝 红
//
    
    sub = self.view.subviews;
    for (UIView *v in sub) {
        NSLog(@"======%ld",v.tag);// tag值:---0,---0,---101,---102, ---100
    }
//
//    //subViews数组中元素的顺序和子视图的层次是永远对应的。
//    //将指定的视图插入到最下层
    [self.view sendSubviewToBack:sub[3]]; //蒋第四个视图放到最后面  也就是蓝色   最后变成了  蓝  黄  红
    sub = self.view.subviews;
    for (UIView *v in sub) {
        NSLog(@"xxxx%ld",v.tag);//tag值:---102,---0,---0,---101, ---100  将蓝色放到最后面  即  蓝   黄  红
    }
//

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(110, 120, 100, 80)];
    view.backgroundColor = [UIColor purpleColor];
    [self.view insertSubview:view belowSubview:sub[2]];//---101,---0,紫 ---102,---0, ---100   蓝 紫  黄  红
//
    [self.view exchangeSubviewAtIndex:2 withSubviewAtIndex:5];//  蓝 红 黄
//
//    //将指定的视图(紫色视图)从他的父视图上移除
    [view removeFromSuperview];
    
}
@end
视图的层级关系1.png
视图的层级关系2.png

相关文章

网友评论

      本文标题:3.2 视图的层级关系

      本文链接:https://www.haomeiwen.com/subject/mmupiqtx.html