項(xiàng)目要求搜索欄有自定義邊框顏色音念、背景色和圓角继谚。
iOS 13 以前
取出searchBar
的私有子view _UISearchBarSearchFieldBackgroundView
,直接修改 borderWidth
, cornerRadius
修改即可衩婚。
iOS 13 以后失效
打印視圖層級(jí)
_UISearchBarSearchFieldBackgroundView
仍然存在馋记,但修改失效滩字。
Debug View Hierarchy 查看視圖層級(jí)
可發(fā)現(xiàn)多了個(gè)UISearchTextField
,且作為searchBar
的屬性可直接訪問(wèn)磅崭,這一點(diǎn)在 WWDC19演講 - Modernizing Your UI for iOS 13 23分有提到
官網(wǎng)的搜索十分好用儿子,展示了關(guān)鍵詞在演講視頻的位置、可以直接跳轉(zhuǎn)砸喻,且有中文字幕柔逼。
- 關(guān)于
searchBar
的很多設(shè)置均可直接操作searchTextField
,不用再hook或者KVC了割岛,很多KVC在iOS 13都會(huì)崩潰愉适。
順便一提這部演講介紹了iOS 13很多UI亮點(diǎn)功能,系統(tǒng)級(jí)別的新手勢(shì):雙指下滑即多選癣漆,三指pinch即復(fù)制维咸;搜索關(guān)鍵詞UISearchToken
;Sheet
下滑dismiss時(shí)更人性化的交互等等。有機(jī)會(huì)我再研究學(xué)習(xí)寫篇文章癌蓖。
話說(shuō)回來(lái)瞬哼,取到searchBar.searchTextField
進(jìn)行修改,邊框生效租副,圓角卻失效了
默認(rèn)圓角比邊框圓角大
這是由于searchTextField.borderStyle
默認(rèn)為UITextBorderStyleRoundedRect
坐慰,自帶圓角丛晌。修改為UITextBorderStyleNone
个盆,運(yùn)行,OK~
其他參考
- 騰訊開源UI組件QMUI_iOS 關(guān)于
UISearchBar
UISearchBar+QMUI.m 介紹了諸多定制和適配細(xì)節(jié)裤纹,值得學(xué)習(xí)~ - PYSearch SearchBar 邊框圓角設(shè)置不了