iOS定制UISearchBar導航欄同步iOS11的方法-創(chuàng)新互聯(lián)

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

網(wǎng)站建設公司,為您提供網(wǎng)站建設,網(wǎng)站制作,網(wǎng)頁設計及定制網(wǎng)站建設服務,專注于成都定制網(wǎng)站,高端網(wǎng)頁制作,對服務器托管等多個行業(yè)擁有豐富的網(wǎng)站建設經(jīng)驗的網(wǎng)站建設公司。專業(yè)網(wǎng)站設計,網(wǎng)站優(yōu)化推廣哪家好,專業(yè)seo優(yōu)化排名優(yōu)化,H5建站,響應式網(wǎng)站。

iOS定制UISearchBar導航欄同步iOS11的方法

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

iOS定制UISearchBar導航欄同步iOS11的方法
iOS定制UISearchBar導航欄同步iOS11的方法

實現(xiàn)思路與案例

核心思想是設置導航欄的titleView和左右的barButtonItem。主要有3種方式

  1.  首頁導航欄的titleView使用button來實現(xiàn),搜索頁面使用searchBar。
  2. 首頁和搜索頁面導航欄的titleView都是用searchBar,searchBar的樣式針對兩個頁面做不同的修改。這種方式可以重用我們定制的searchBar,減少冗余。
  3. 首頁導航欄titleView使用button來實現(xiàn),搜索頁面的使用textField。這種方式更徹底,更靈活,相對也更復雜一些。

為什么上面的titleView說是button不是其他的?其他的當然也可以實現(xiàn)。button自帶imageView和titleLabel,只需要設置偏移量更容易達到我們想要的,而且視圖層級更少,在流暢性方面更有保證些。

案例

iOS定制UISearchBar導航欄同步iOS11的方法

iOS定制UISearchBar導航欄同步iOS11的方法

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

iOS定制UISearchBar導航欄同步iOS11的方法 

iOS定制UISearchBar導航欄同步iOS11的方法

圖中可以清楚看到知乎首頁導航欄由2個button組成,搜索頁面使用了textField,這類似上文提到的第三種思路。

實戰(zhàn)

通過自定義SearchBar實現(xiàn)一個如下樣式的導航欄

iOS定制UISearchBar導航欄同步iOS11的方法

先自定義一個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)建站muchs.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站名稱:iOS定制UISearchBar導航欄同步iOS11的方法-創(chuàng)新互聯(lián)
本文路徑:http://muchs.cn/article32/ejjsc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供GoogleChatGPT、網(wǎng)站營銷、網(wǎng)站內鏈、關鍵詞優(yōu)化定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司