一个UIView里面可以包含许多的Subview(其他的UIView),而这些Subview彼此之间时有所谓的阶层关系的,这有点类似绘图软件中图层的概念,下面程序代码演示乐几个中管理图层(Subview)上常用的方法,其程序代码如下:
1. 将Subview从当前的UIView中移除
[Subview removeFromSuperview];
2. 往UIView中增加一个Subview
[UIView addSubview:Subview];
3. 将Subview往后移动一个图层(与它的后一个图层对调位置)。在UIView中将Subview往前或者往后移动一个图层,往前移动会覆盖较后层的Subview,而往后移动则会 被较上层的Subview所覆盖。
[UIView sendSubviewToBack:Subview];
4. 在UIView中使用索引Index交换两个Subview彼此的图层层级。
[UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];
5. 使用Subview的变数名称取得它在UIView中的索引值(Index)
NSInteger index = [[UIView subviews] indexOfObject:Subview名称];
6. 取得UIView中所有的Subview,调用此方法会传回一个NSArray数组,并由后往前的顺序依次列出这些Subview
[UIView subviews];
addSubview和insertSubview的区别
addSubview是将view加到所有层的最顶层,相当于将insertSubview的atIndex参数设置成view.subviews count即
[ view addSubview:oneview ] == [ view insertSubview:oneview atIndex:view.subviews count ]
addSubview是加到最后
insertSubview是加到指定的位置
如果要移除一个UIView的所有子视图,SDK里没有remove all之类的方法,可以用for loop 循环调用-removeFromSuperview
例如:for(UIView *view in [ self.view subviews ]){
[ view removeFromSuperview ];
}
或者调用makeObjectsPerformSelectior:@selector(removeFromSuperview)方法
[ self.optionView.subviews makeObjectsPerformSelectior:@selector(removeFromSuperview) ]
——爱分享,一起学,共成长。