iOS11適配 - UINavigationBar上添加UISearchBar

咳咳,最近兩天都在適配iOS11和iPhone X,在項(xiàng)目中遇到比較麻煩的一個(gè)適配是:在導(dǎo)航欄上添加的UISearchBar在iOS10及一下版本上顯示一切正常,但是當(dāng)我升級(jí)到了iOS11后,整個(gè)世界都不好了,導(dǎo)航欄上的UISearchBar不見了。

最終我還是成功的再iOS11上將UINavigationBar上的UISearchBar顯示出來了,當(dāng)然解決問題的這個(gè)過程還是很艱辛的,翻遍Google,Stack Overflow后終于找到了解決辦法。再次記錄下吧,希望能夠幫助到同樣遇到相同問題的各位開發(fā)者。

問題展示

先來一張圖對(duì)比下iOS10和iOS11兩個(gè)不同系統(tǒng)下,在導(dǎo)航欄中添加UISearchBar的情況,大家先感受下:

iOS11以下版本

iOS11

情況大概就是這么一個(gè)情況,在iOS11上導(dǎo)航欄上的搜索框不見了。

接下來來分析一下代碼吧!

代碼分析

UIView *titleView = [[UIView alloc] init];
titleView.py_x = PYSEARCH_MARGIN * 0.5;
titleView.py_y = 7;
titleView.py_width = self.view.py_width - 64 - titleView.py_x * 2;
titleView.py_height = 30;
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:titleView.bounds];
[titleView addSubview:searchBar];
titleView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
self.navigationItem.titleView = titleView;

一般來說都是這樣將UISearchBar添加到導(dǎo)航欄上去的,先定義一個(gè)titleView,將UIsearchBar添加到titleView,然后將titleView賦值給self.navigationItem.titleView。

解決辦法

將titleView的UIView重寫為XUIView。

#import "XUIView.h"

@implementation XUIView

-(CGSize)intrinsicContentSize
{
    return UILayoutFittingExpandedSize;
}
@end

然后將上面的代碼修改為:

UIView *titleView = [[XUIView alloc] init];
titleView.py_x = PYSEARCH_MARGIN * 0.5;
titleView.py_y = 7;
titleView.py_width = self.view.py_width - 64 - titleView.py_x * 2;
titleView.py_height = 30;
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:titleView.bounds];
[titleView addSubview:searchBar];
titleView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
self.navigationItem.titleView = titleView;

最后在iOS11上導(dǎo)航欄上的UISearchBar就顯示出來了~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 相信大家已經(jīng)被iPhoneX的劉海洗腦了,除了吐槽,留給我們的還有比較麻煩的適配工作。下面針對(duì)在整理過程中發(fā)現(xiàn)的適...
    smile麗語閱讀 4,992評(píng)論 6 21
  • 更新iOS11后, 不少地方需要進(jìn)行適配,本文主要講下UISearchBar的適配,首先我們來看兩張圖對(duì)比 我們發(fā)...
    madaoCN閱讀 9,224評(píng)論 6 7
  • 編譯器升級(jí)xcode9,準(zhǔn)備適配一下iphoneX的布局,調(diào)試時(shí)發(fā)現(xiàn)由于一些ios11新特性或者底層變化的原因,x...
    YY程序猿閱讀 3,985評(píng)論 4 28
  • 適配 iPhone X 的相關(guān)內(nèi)容詳見我的另一篇文章關(guān)于 SafeArea 和 適配 iPhoneX 前言 又是一...
    KavinZhou閱讀 6,909評(píng)論 18 25
  • App界面適配iOS11(包括iPhoneX的奇葩尺寸) 一劍孤城關(guān)注 2017.08.15 11:15*字?jǐn)?shù) 1...
    珊珊大王閱讀 1,160評(píng)論 0 2

友情鏈接更多精彩內(nèi)容