UIView 中一些管理 Subview 常用的方法

一個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]

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容