一個UIview里面可以包含很多的Subview(其他的UIview),而這些Subview彼此之間也會有一定的階段關(guān)系,比較類似于繪圖軟件中圖層的概念,以下主要是總結(jié)了一些SubView常用方法.
1. 將Subview從當(dāng)前的UIView中移除
[Subview removeFromSuperview];
2. 替UIView增加一個Subview
[UIView addSubview:Subview];
在 UIView 中將 Subview 往前或是往后移動一個圖層(往前移動會覆蓋住較后層的 Subview,而往后移動則會被較上層的 Subview 所覆蓋)
3. 將Subview往前移動一個圖層(與它的前一個圖層對調(diào)位置)
[UIView bringSubviewToFront:Subview];
4. 將Subview往后移動一個圖層(與它的后一個圖層對調(diào)位置)
[UIView sendSubviewToBack:Subview];
在 UIView 中使用索引 Index 交換兩的 Subview 彼此的圖層層級。
5. 交換兩個圖層
[UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];
使用 Subview 的變數(shù)名稱取得它在 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的區(qū)別
addSubview是加到最后
insertSubview是加到指定的位置
即相當(dāng)于將insertSubview的atIndex參數(shù)設(shè)置成view.subviews count
[view addSubview:oneview] == [view insertSubview:oneview atIndex:view.subviews count]
9. 如果要移除一個 UIView 的所有子視圖,SDK 里沒有 remove all 之類的方法蚜印≥航可以用 for loop 循環(huán)調(diào)用 – removeFromSuperview 來移除
例如:
for(UIView *view in [self.view subviews])
{
[view removefromsuperview]
}