系統(tǒng)原生的UISearchBar在iOS 11經歷了一次變革,高度由原來的44變成了56 (使用默認高度的估計都被坑了),樣式也發(fā)生了些微的變化,比如在未輸入狀態(tài)下圓角變化,放大鏡圖標和文本的文字不再居中而是靠左了。具體看圖


一些主流App也常見在導航欄嵌入searchBar,以網易云音樂和知乎為例,左邊是主頁,右邊是搜索頁面 (注意光標)。


實現思路與案例
核心思想是設置導航欄的titleView和左右的barButtonItem。主要有3種方式
為什么上面的titleView說是button不是其他的?其他的當然也可以實現。button自帶imageView和titleLabel,只需要設置偏移量更容易達到我們想要的,而且視圖層級更少,在流暢性方面更有保證些。
案例


網易云音樂首頁和搜索頁面的導航欄視圖層級,titleView都使用MCSearchBar來實現,并且設置了導航欄左右兩邊的按鈕 。這類似上文所說的第二種思路。

圖中可以清楚看到知乎首頁導航欄由2個button組成,搜索頁面使用了textField,這類似上文提到的第三種思路。
實戰(zhàn)
通過自定義SearchBar實現一個如下樣式的導航欄

先自定義一個UISearchBar的初始化方法,觀察一下首頁和搜索頁的異同,像searchField的大小背景色是一致的,可以這部分可以直接給定,而placeholder是不一樣的,所以應該在調用的時候提供。以此類推,新建一個OHSearchBar類,一個初始化方法
- (instancetype)initWithFrame:(CGRect)frame placeholder:(NSString *)placeholder textFieldLeftView:(UIImageView *)leftView showCancelButton:(BOOL)showCancelButton tintColor:(UIColor *)tintColor {
if (self = [super initWithFrame:frame]) {
self.frame = frame;
self.tintColor = tintColor; //光標顏色
self.barTintColor = [UIColor whiteColor];
self.placeholder = placeholder;
self.showsCancelButton = showCancelButton;
self.leftView = leftView; // 用來代替左邊的放大鏡
[self setImage:[UIImage imageNamed:@"clear"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal]; // 替換輸入過程中右側的clearIcon
}
return self;
}另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站名稱:iOS定制UISearchBar導航欄同步iOS11的方法-創(chuàng)新互聯(lián)
本文路徑:http://chinadenli.net/article32/ejjsc.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供Google、ChatGPT、網站營銷、網站內鏈、關鍵詞優(yōu)化、定制網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)