一个UIview里面可以包含很多的Subview(其他的UIview),而这些Subview彼此之间也会有一定的阶段关系,比较类似于绘图软件中图层的概念,以下主要是总结了一些SubView常用方法.
1. 将Subview从当前的UIView中移除
[Subview removeFromSuperview];
2. 替UIView增加一个Subview
[UIView addSubview:Subview];
在 UIView 中将 Subview 往前或是往后移动一个图层(往前移动会覆盖住较后层的 Subview,而往后移动则会被较上层的 Subview 所覆盖)
3. 将Subview往前移动一个图层(与它的前一个图层对调位置)
[UIView bringSubviewToFront:Subview];
4. 将Subview往后移动一个图层(与它的后一个图层对调位置)
[UIView sendSubviewToBack:Subview];
在 UIView 中使用索引 Index 交换两的 Subview 彼此的图层层级。
5. 交换两个图层
[UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];
使用 Subview 的变数名称取得它在 UIView 中的索引值(Index )。
6. 取得Index
NSInteger index = [[UIView subviews] indexOfObject:Subview名称];
Subview 加上 NSInteger 的註记 (Tag),好让之后它们分辨彼此。
7. 加上註记
[Subview setTag:NSInteger];
取得 UIView 中所有的 Subview,此方法会传回一个 NSArray,并以由后往前的顺序列出这些 Subview,下图中是列出范例图片里 Root 中所有的 Subview。
//取的UIView下的所有Subview
[UIView subviews]
8. addSubview和insertSubview的区别
addSubview是加到最后
insertSubview是加到指定的位置
即相当于将insertSubview的atIndex参数设置成view.subviews count
[view addSubview:oneview] == [view insertSubview:oneview atIndex:view.subviews count]
9. 如果要移除一个 UIView 的所有子视图,SDK 里没有 remove all 之类的方法。可以用 for loop 循环调用 – removeFromSuperview 来移除
例如:
for(UIView *view in [self.view subviews])
{
[view removefromsuperview]
}