子视图是以栈的方式存放的。
每次插入或添加时[self.view.subViews count]都会增加。
addsubview时都是在栈最后面添加,即在视图的最上方。
insertSubView时是插入栈的某一位置,即插入视图层的某一位置。
即[self.view addSubView:xx.view] 等价于 [self.view insertSubView:xx.view atIndex:[self.view.subViews count]];
总之:
addSubview是一层一层往上加,新加的只能放到最上层,
insertSubView可以控制将view添加到指定的层。
————————————————
版权声明:本文为CSDN博主「十万个逗」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/q1194259339/article/details/76283741
iOS中调整view层级位置的两个属性
控件的层级关系和你加入到父视图的顺序有关,也就是先addsubview至父视图的,层级越低,会被后加入的遮盖。 可以通过以下函数改变子视图的层级 将一个UIView显示在最前面:
- (void)bringSubviewToFront:(UIView *)view;
将视图显示在下面: - (void)sendSubviewToBack... 例如下面的代码示例:
UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(10, 50, 100, 50)];
view1.backgroundColor = [UIColor blueColor];
[
self
.view addSubview:view1];
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(15, 55, 100, 50)];
view2.backgroundColor = [UIColor grayColor];
[
self
.view addSubview:view2];