runtime是一套比較底層的純c語言的api, 屬於c語言庫, 包含了很多底層的c語言api。
在我們平時編寫的ios**中, 最終都是轉成了runtime的c語言**。所謂執行時,也就是在編譯時是不存在的,只是在執行過程中才去確定物件的型別、方法等。利用runtime機制可以在程式執行時動態修改類、物件中的所有屬性、方法等。
關聯物件(associated objects)
swift extension 能對已經存在 cocoa 類中新增極為豐富的功能,但它的兄弟 objective-c 的 category 卻遜色了不少。比如說 objective-c 中的 extension 就無法向既有類新增屬性。
令人慶幸的是 objective-c 的 關聯物件 可以緩解這種局面。例如要向乙個工程裡所有的 view controllers 中新增乙個 descriptivename 屬性,我們可以簡單的使用 objc_get/setassociatedobject()來填充其 get 和 set 塊
實現思路
1.在原有的tabbar新增乙個按鈕,將其放到指定位置(中間偏上)
2.這時候要注意tabbar的頂部黑線,需要對其進行隱藏或者設定透明顏色來去除
extension uitabbar
//定義乙個新的tabbar屬性,並設定set,get方法
var btntab:uibutton?
/**新增中心按鈕
*/func addmycentertab()->uibutton {
if self.btntab == nil {
self.shadowimage = uiimage() //(49 - 42) / 2
let btn = uibutton(frame: cgrect.init(x: (width - 50) / 2, y: -14, width: 50, height: 50))
btn.autoresizingmask = [.flexibleheight,.flexiblewidth]
btn.setimage(uiimage.init(named: "工具"), forstate: uicontrolstate.normal)
self.addsubview(btn)
self.btntab = btn
return self.btntab!
實現時只需呼叫addmycentertab()即可
下面來去除黑線:
//邊框顏色
self.tabbar.shadowimage = uiimage.init(color: bglightgray)
self.tabbar.backgroundimage = uiimage.init(color: bglightgray)
Swift之構造器(上)
目錄 swift之構造器 上 swift之構造器 中 swift之構造器 下 swift賦予自定義型別更加豐富的功能,乙個顯著地方就是構造過程。swift可以為自定義型別設定構造器來初始化乙個例項。有關swift構造器的使用特點可以總結如下 1.構造器適用於類 結構體 列舉。是新的例項可用之前必須執...
Tabbar上拉隱藏下拉顯示
專案中有時候為了增加特效,我們通常會用到上拉滑動介面時候讓tabbar隱藏 當我們再下拉的時候再顯示tabbar,一行 就可以搞定 當然,我們會用到 void scrollviewdidscroll uiscrollview scrollview這個方法 我們只需要在這個方法裡面設定tabbar的a...
swift開發筆記4 設定tabbar選中顏色
參考 swift語法的寫法 ios7.0在故事板 tab bar 屬性設定中設定 image tint顏色值可以實現,ios7.1中該方法不起作用,可以在 中加入下句實現 self tabbarcontroller?tabbar.selectedimagetintcolor uicolor blac...