Swift之TabBar上新增控制項

2021-09-03 08:29:28 字數 1470 閱讀 6893

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...