iOS開發之 巧用反射機制

2021-09-08 01:14:35 字數 1111 閱讀 4591

1、應用場景——自定義uitabbarcontroller的tabbar檢視

(1)隱藏tabbar檢視

一般我們選擇自定義tabbar檢視有兩種方式。1是將tabbar檢視隱藏;2是將tabbar檢視從父檢視中移除,**如下(假設,已建立uitabbarcontroller子類):

- (void)viewdidload

當執行完以上**後,tabbar檢視「消失」了,就會顯示出tabbar檢視之前所占用的空白位置,如下圖所示():

之後,我們會將自定義的tabbar檢視新增到這個空白位置,這個空白位置的高度是49。因此我們自定義的tabbar檢視高度也應該是49,否則會出現gap。

然而有時,我們的自定義的tabbar檢視高度不一定是49的高度。那麼也就是說,我們需要將這紫色的頁面高度進行調整。

(2)調整檢視

在調整檢視之前,我們需要看看tabbarcontroller的檢視,包含哪些子檢視,**如下:

for (uiview *subview in self.view.subviews)

通過控制台列印結果如下:

subview : >

subview : >

從列印結果我們不難看出,tabbarcontroller的檢視包含2個子檢視,乙個是我們非常熟悉的uitabbar檢視,大家可以仔細看看它的frame(尤其是高度),而兩外乙個檢視名叫uitransitionview的物件。其實,當我們建立乙個tabbarcontroller控制器,它在請求自己的view時,會自動新增2個子檢視,乙個是我們非常熟悉的tabbar檢視,另外乙個就是uitransitionview。tabbar檢視的作用不言而喻,切換檢視控制器。而uitranstionview檢視作用則是用來承載我們感興趣的內容(間接的載入其他檢視控制器的子檢視)。也就是圖2-1的中的紫色部分。因此,如果我們想控制自定義tabbar檢視的高度(不在是固定的49),我們就需要拉長uitransitionview的高度,即讓紫色的檢視加長。那麼,問題又來了,我們需要在遍歷子檢視時準確的找出uitransitionview,然後修改它的高度,這時,反射就派上用場了。**如下所示:

for (uiview *subview in self.view.subviews)

}

iOS開發之 UILabel的巧用

主要講解利用uilabel的來做乙個簡單的toast效果。這個是看到wdlabel的實現,感覺挺好的,就 主要的思路就是繼承uilabel,然後在drawrect cgrect rect裡面進行調整,以達到乙個toast的效果。define klabelcornerradius 9.0f void ...

iOS 反射機制和應用

反射機制 ios反射機制 執行時選擇建立哪個例項,並動態選擇呼叫哪個方法。獲取class的三種方法 通過字串獲取class class class nsclassfromstring nsstring nslog class type class 直接用class 來建立物件 通過物件來獲取clas...

iOS 開發之沙盒機制

1.ios 沙盒機制簡介 沙盒也叫沙箱,英文standbox,其原理是通過重定向技術,把程式生成和修改的檔案定向到自身資料夾中。在沙盒機制下,每個程式之間的資料夾不能互相訪問。ios系統為了保證系統安全,採用了這種機制 ios 應用程式在安裝時,會建立屬於自己的沙盒檔案,應用程式不能直接訪問其他應用...