en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

10.18.2011

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

  

 一個 UIView 裡面可以包含許多的 Subview(其他的 UIView),而這些 Subview 彼此之間是有所謂的階層關係,這有點類似繪圖軟體中圖層的概念,下面程式碼示演示了幾個在管理圖層(Subview)上常用的方法,其程式碼如下。

首先是大家最常使用的新增和移除 Subview。

//將Subview從當前的UIView中移除
[Subview removeFromSuperview];

//替UIView增加一個Subview
[UIView addSubview:Subview];

在 UIView 中將 Subview 往前或是往後移動一個圖層,往前移動會覆蓋住較後層的 Subview,而往後移動則會被較上層的 Subview 所覆蓋。

//將Subview往前移動一個圖層(與它的前一個圖層對調位置)
[UIView bringSubviewToFront:Subview];

//將Subview往後移動一個圖層(與它的後一個圖層對調位置)
[UIView sendSubviewToBack:Subview];

在 UIView 中使用索引 Index 交換兩的 Subview 彼此的圖層層級。

//交換兩個圖層
[UIView exchangeSubviewAtIndex:indexA withSubviewAtIndex:indexB];

使用 Subview 的變數名稱取得它在 UIView 中的索引值(Index )。

//取得Index
NSInteger index = [[UIView subviews]indexOfObject:Subview名稱];

替 Subview 加上 NSInteger 的註記 (Tag),好讓之後它們分辨彼此。

//加上註記
[Subview setTag:NSInteger];

最後是取得 UIView 中所有的 Subview,呼叫此方法會傳回一個 NSArray,並以由後往前的順序列出這些 Subview,下圖中是列出範例圖片裡 Root 中所有的 Subview。

//取的UIView下的所有Subview
[UIView subviews]







1 則留言: