视图的层级关系
#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
网友评论