UISearchBar使用技巧

UISearchBar類結(jié)構(gòu)


apple的UISearchBar的構(gòu)成基本如上圖所示。可以很清楚地看出主要是由兩個(gè)部分組成,UISearchBarTextField與UISearchBarBackground兩個(gè)部分組成,而UISearchBar提供的修改的屬性和接口挺有限的,因此可以根據(jù)上圖的結(jié)構(gòu)遍歷或者KVC得到子視圖來(lái)進(jìn)行一定程度的定制。

把邊框線移除與設(shè)置背景顏色

UISearchBarBackground是用于設(shè)置背景效果的,但它也會(huì)帶來(lái)邊框線的效果,若要移動(dòng)UISearchBar的邊框線,就可以removeFromSuperView將UISearchBarBackground移除掉來(lái)實(shí)現(xiàn)。

在UISearchBarBackground被移除后,這是UISearchBar的background color才能完全顯示出來(lái)。

輸入欄的背景顏色設(shè)置

若想通過(guò)UISearchBar的屬性直接設(shè)置輸入欄的背景顏色同樣是不行,apple只提供了兩種默認(rèn)的風(fēng)格給你,白和黑,若想自己設(shè)置輸入欄的顏色,同樣的原理,也是需要同過(guò)遍歷子View或KVC獲取到UISearchBarTextField,到這里,其實(shí)大家也知道UISearchBar實(shí)際上就是其他的一些基礎(chǔ)圖形控件所拼湊成了,所以你要修改輸入欄的背景顏色,那實(shí)際上就是修改UISearchBarTextField的background color。

三個(gè)附加button

UISearchBar有三個(gè)附加的button,分別是CancelButton、SearchResultsButton、BookmarkButton,這三個(gè)button其實(shí)又分別對(duì)應(yīng)著三個(gè)Delegate回調(diào),可以給我們定制點(diǎn)擊后的事件。

cancelBtn

其中cancelButton是用于取消當(dāng)前的搜索所用的,但有一點(diǎn)不好的就是,它會(huì)默認(rèn)顯示為cancel,并且不會(huì)根據(jù)當(dāng)前系統(tǒng)的語(yǔ)言環(huán)境切換,所以得自己處理,同樣的,因?yàn)閁ISearchBar并沒(méi)有提供直接的屬性去訪問(wèn)這個(gè)cancelButton,所以也得通過(guò)遍歷或者KVC的方式獲取并修改。實(shí)現(xiàn)代碼如下:

其中需要注意的是,setShowCancelButton這個(gè)方法必須在遍歷前調(diào)用,只有調(diào)用了這句話,UISearchBar才會(huì)往里面添加一個(gè)cancelBtn的控件,所以不預(yù)先調(diào)用的話,就無(wú)法遍歷得到cancelBtn。

SearchResultsButton & BookmarkButton

由對(duì)象的結(jié)構(gòu)圖,可以看出這兩個(gè)button實(shí)際上就是同一個(gè)button下的兩種風(fēng)格,并對(duì)應(yīng)著不同的delegate回調(diào)時(shí)間,所以它們兩個(gè)只能同時(shí)出現(xiàn)一個(gè)。

實(shí)現(xiàn)效果與對(duì)應(yīng)的初始化代碼


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容