如何修改系統控制項

2021-07-09 02:01:22 字數 1719 閱讀 4699

多數情況下, 系統原生控制項太醜, 無法滿足我們的需求. 那麼系統控制項如何修改呢?

思路:

需求: 更改badgevalue的系統背景

檢視檢視層級結構, 找到其view對應的位置

那麼接下來我們的任務是一層一層剝開它的心

for tabbarchild in (self.tabbarcontroller?.tabbar

.subviews)!

從列印結果中找到我們需要的下一層 uitabbarbutton

for tabbarchild in (self.tabbarcontroller?.tabbar

.subviews)!

}

列印結果為:

下一步目標為_uibadgeview, 所以我們繼續遍歷

for tabbarchild in (self.tabbarcontroller?.tabbar

.subviews)!}}

}

列印結果為:

下一步目標: _uibadgebackground

for tabbarchild in (self.tabbarcontroller?.tabbar

.subviews)!}}}}}

想要賦值, 屬性點不出來怎麼辦? 使用kvc

kvc: 知道value不知道key怎麼辦? 使用執行時

執行時可以獲取乙個物件身上的成員變數

// 用於記錄獲取回來的成員變數是有多少個

var count: uint32 = 0

// 通過執行時候,獲取其身上的成員變數

// 引數1:傳入 class,引數2: 傳入乙個指標,記錄個數

let ivars = class_copyivarlist(nsclassfromstring("_uibadgebackground")!, &count)

// 遍歷成員變數的列表

for i in

0..// 取到對應位置的值

let ivar = ivars[int(i)]

// 獲取其名字

let name = ivar_getname(ivar)

lettype = ivar_gettypeencoding(ivar)

// 轉 nsstring

let namestring = nsstring(cstring: name, encoding: nsutf8stringencoding)

let typestring = nsstring(cstring: type, encoding: nsutf8stringencoding)

printlog("\(namestring)====\(typestring)")

// 判斷其對應屬性, 通過 kvc 賦值其值

if namestring!.isequaltostring("_image")

注: 關鍵點在如何獲取成員變數列表;

執行時有木有好強大

如何修改Delphi自帶控制項

舉例說明 比如要在dialogs單元新增乙個新的函式proc superbirdxp 1 備份delphi的lib目錄中的dialogs.dcu檔案 source目錄中的dialogs.pas檔案。2 新建乙個資料夾比如 delphifolder 2 將source中的dialogs.pas檔案拷貝...

CentOS系統如何修改語言

日常中大家在使用centos過程都會因為英文不熟悉而造成不方便,今天數脈科技就位大家介紹centos系統如何修改語言。centos6系統修改語言方法如下 1.用root登入系統,密碼為建立虛擬機器時候的密碼。建立虛擬機器的時候使用的使用者名為 admin,密碼 admin 這個時候用root adm...

修改控制項屬性

1 frame 能修改位置和尺寸。2 center 修改位置。3 bounds 能修改尺寸。4 tansform 能修改尺寸 位置和旋轉角度。一 新增按鈕及修改按鈕屬性。建立按鈕 uibutton btn uibutton alloc init 新增按鈕 self.view addsubview b...