ios 11 導航欄適配

導航欄的差異

一.導航欄高度變化

  • 導航欄在ISO 10 之前都是默認的64,但是在ios 10 之后都變了,在ios 11 添加了大標題,如系統(tǒng)設(shè)置頁面:
Snip20171029_9.png
  • ios11 新增 LargeTitleView專門用于顯示大標題,不過默認是不顯示的.
設(shè)置這個參數(shù)為yes 顯示導航欄 大標題
 self.navigationController.navigationBar.prefersLargeTitles = YES;
  • 在 ios11 中iPhone X 和非iphonex 手機的導航欄還是有差異的.
非iPhone X ios11 導航欄結(jié)構(gòu):
20(狀態(tài)欄) + 44(titleView) + 52(largeTitleView-- 這個是新增的)= 116
iPhone X ios11 導航欄結(jié)構(gòu):
44(狀態(tài)欄) + 44(titleView) + 52(largeTitleView-- 這個是新增的)= 140
iphonex 小標題
statusBarFrame {{0, 0}, {375, 44}}  高度多22
navigationBarFrame: {{0, 44}, {375, 44}} y 下降22 高 不變
selfViewFrame: {{0, 0}, {375, 812}}
mainScreen: {{0, 0}, {375, 812}}
selfTabBarControllerTabBarFrame {{0, 729}, {375, 83}}

iphonex 大標題
statusBarFrame {{0, 0}, {375, 20}}
navigationBarFrame: {{0, 20}, {375, 96}}
selfViewFrame: {{0, 0}, {375, 667}}
mainScreen: {{0, 0}, {375, 667}}
selfTabBarControllerTabBarFrame {{0, 618}, {375, 49}}
 iphone 8 小標題
statusBarFrame {{0, 0}, {414, 20}}
navigationBarFrame: {{0, 20}, {414, 44}}
selfViewFrame: {{0, 0}, {414, 736}}
mainScreen: {{0, 0}, {414, 736}}
selfTabBarControllerTabBarFrame {{0, 687}, {414, 49}}

二.導航欄圖層變化
ios11之前導航欄的title 是添加在UINavigationItemView上面,而navigationBarButton是直接添加在navigationBar 上面的,如果設(shè)置了titleView,則titleView也只直接添加在navigationBar 上面的.

在ios11 之后,蘋果添加了新的類來管理.navigationBar 會添加在UIButtonBarStackView 上面的,而UIButtonBarStackView 則添加在UINavigationBarContentView上面,如果沒有給titleView賦值,則titleView會直接添加在UINavigationBarContentView 上面,如果賦值了titleView 則會新生成UITAMICAdatptorView, 把titleViewtianjai 在這個類上面,這個類會添加在UInavigationBarContentView 上面.

三.導航欄的邊距變化
在ios11 對導航欄里面的item的邊距也做了調(diào)整:

(1) 如果只是設(shè)置了titleView,沒有設(shè)置barbutton,把titleView的寬度設(shè)置為屏幕的寬度,則titleView 距離屏幕邊距的: ios11 之前 iPhone 6p 上20 p 在iPhone6p 之前 是 16p,ios 11 之后 ,在iPhone6p上是12p,在iPhone6p 之前是8p.

(2) 如果設(shè)置了Barbutton,沒有設(shè)置titleView,則在ios11 里,barbutton距離邊距是20p 和16 p,在ios 11  之前barbutton 邊距距離屏幕的邊距也是20p 和 16p.

(3) 如果同時設(shè)置了titleView 和 barbutton,則在ios11 之前,titleView 和barbutton 之間的間距是6p,在 ios11 上titleView和barbutton 之間無間距.

四. APP 需要實現(xiàn)導航欄左右按鈕邊距為0
在 ios 11 之前,可以設(shè)置一個width 為 負的navigationBarbutton,將按鈕擠到邊緣,變相實現(xiàn)0邊距的導航欄按鈕,但是,這招在ios11 失效了,原因在于UIButtonBarStackView,這個ios 9 之后出來的,用來相對布局的組件,限制了Veiw 的布局,那么怎么搞呢?

想到的方法有幾個:

  1. 在viewWillAppear 里面,將UIButtonBarStackView 取出來,直接設(shè)置他的x坐標.
  2. 設(shè)置titleView ,然后將button 添加在titleView 上面,根據(jù)不同的邊距做便宜.

列表的變化

一. automaticallyAdjustsScrollViewInsets
在ios11 之前,如果想要scrollview 不偏移64 ,則需要設(shè)置
automaticallyAdjustsScrollViewInsets = NO, 但是 這個屬性在ios11 直接被拋棄了

tableView 默認使用self-Sizing
這個配合 estimatedRowHeight, estimatedSectionfooterheight, estimatedSectionHeaderheight 使用,可以預估高度.之前,設(shè)置header或者footer高度為0時,需要設(shè)置需要設(shè)置height = 0.1,才會起作用,如果直接設(shè)置為0 ,則會使用默認的高度.ios11 由于自動使用預估高度,所以,忽略了設(shè)置的高度,使用原來的高度增大了.只要把這個屬性設(shè)置成0 就OK了.

ihonex 底部的tabbar 的高度改變

iPhonex 不僅多了劉海,底部還有一個半角的矩形,使得tabbar多出來了34p 的高度,不過不管導航欄和tabbar 一般的系統(tǒng)都會自動適配 safeArea

ios 11 iphonex 頁面push 時 tabbar位置變化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末遗淳,一起剝皮案震驚了整個濱河市狮鸭,隨后出現(xiàn)的幾起案子清女,更是在濱河造成了極大的恐慌堕担,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件跋涣,死亡現(xiàn)場離奇詭異养距,居然都是意外死亡矾端,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門携冤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悼粮,“玉大人,你說我怎么就攤上這事曾棕】勖ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵翘地,是天一觀的道長申尤。 經(jīng)常有香客問我癌幕,道長,這世上最難降的妖魔是什么昧穿? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任序芦,我火速辦了婚禮,結(jié)果婚禮上粤咪,老公的妹妹穿的比我還像新娘谚中。我一直安慰自己,他們只是感情好寥枝,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布宪塔。 她就那樣靜靜地躺著,像睡著了一般囊拜。 火紅的嫁衣襯著肌膚如雪某筐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天冠跷,我揣著相機與錄音南誊,去河邊找鬼。 笑死蜜托,一個胖子當著我的面吹牛抄囚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播橄务,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幔托,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蜂挪?” 一聲冷哼從身側(cè)響起重挑,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎棠涮,沒想到半個月后谬哀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡严肪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年史煎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诬垂。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡劲室,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出结窘,到底是詐尸還是另有隱情很洋,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布隧枫,位于F島的核電站喉磁,受9級特大地震影響谓苟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜协怒,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一涝焙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧孕暇,春花似錦仑撞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至座舍,卻和暖如春沮翔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背曲秉。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工采蚀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人承二。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓榆鼠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親矢洲。 傳聞我的和親對象是個殘疾皇子璧眠,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

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