一款類似網易新聞的條件篩選器(swift)

2021-08-01 07:34:13 字數 2921 閱讀 6120

不多解釋,網上這種類似的篩選器已經很多了,最近寫專案時用到了,就簡單封裝了乙個,自我感覺挺好用的,可定義性強,用起來很方便就拿出來分享一下!swift版

看圖:

}//正常狀態下字型顏色

var titlenormalcolor : uicolor! }}

}//選中狀態下字型顏色

var titleselectedcolor : uicolor!

}self.indicatorview

.backgroundcolor = self.titleselectedcolor}}

//正常狀態下按鈕背景顏色

var normalbackgroundcolor : uicolor! }}

}}//選中狀態下按鈕的背景色

var selectedbackgroundcolor : uicolor! }}

}}//正常狀態下按鈕的背景

var normalbcakgroundimage : uiimage! }}

}//選中狀態下按鈕的背景

var selectedbcakgroundimage : uiimage! }}

}//是否顯示選中指示條

var isshowindicator : bool!

}//選中指示條的寬度

var indicatorviewheight : cgfloat!

}//字型大小

var titlefont : uifont!

}}else}}

//建立button

fileprivate func creatbtn()

x = 0

for i in

0...titlearray

.count else

if self.titleselectedcolor == nil else

if self.normalbcakgroundimage == nil else

if self.selectedbcakgroundimage == nil else

if self.normalbackgroundcolor == nil else

button.clipstobounds = true

var width : cgfloat = 0

width = titlesize.width + 20

button.frame = cgrect.init(x: x, y: 0, width: width, height: self.bounds

.size

.height)

self.addsubview(button)

button.addtarget(self, action: #selector(self.selectedbtnaction(sender:)), for: .touchupinside)

if i == (self.selectedindex == nil ? 0 : self.selectedindex) else

}x = x + width

}self.contentsize = cgsize.init(width: x, height: self.bounds

.size

.height)

self.bringsubview(tofront: self.indicatorview)

self.indicatorview

.ishidden = self.isshowindicator == nil ? false : !self.isshowindicator

}@objc fileprivate func selectedbtnaction(sender:uibutton)

}sender.isselected = true

let bound = self.indicatorview

.bounds

uiview.animate(withduration: 0.2)

let rect = self.convert(cgrect.init(x: sender.frame

.origin

.x - self.frame

.size

.width/2, y: sender.frame

.origin

.y, width: self.frame

.size

.width+10, height: sender.frame

.size

.height), to: self)

self.scrollrecttovisible(rect, animated: true)

sender.backgroundcolor = selectedbackgroundcolor

if self.selectdelegate != nil

}override init(frame: cgrect)

required init?(coder adecoder: nscoder)

}用法:

override func viewdidload() 

func selectsegmentaction(index: int)

一款簡單實用的文字輪播器

用處 為了解決文字過長顯示不全的雞肋,進行如led屏的輪播機制,進行輪播,將所有文字展現出來。dctextcirclelabel是我封裝的文字輪播器,直接載入到view 上面使用即可。dctextcirclelabel.h檔案裡 import inte ce dctextcirclelabel ui...

一款免費的文字編輯器Notepad

notepad 是 windows作業系統下的一套文字編輯器 軟體版權許可證 gpl 有完整的中文化介面及支援多國語言編寫的功能 utf8技術 notepad 功能比 windows 中的 notepad 記事本 強大,除了可以用來製作一般的純文字說明檔案,也十分適合編寫電腦程式 notepad 不...

推薦一款好用的WSL終端模擬器

windows 10 中包含了乙個 wsl windows subsystem for linux 子系統,我們可以在其中執行未經修改過的原生 linux elf 可執行檔案。利用它我們可以做很多事情,對開發人員和普通使用者都是如此。當然對開發人員的吸引力更大一些,因為這意味著在一些情況,不再需要使...