在很多項目中跑杭,為了解決iOS項目中導航欄的push铆帽、pop中存在的問題,很多時候開發(fā)者們都隱藏了導航控制器的navigationBar,為每一個視圖控制器(viewController)都創(chuàng)建一個View(navigationBar)德谅。
iOS11之前常常是這樣來設(shè)置導航欄的爹橱,但在iOS11上運行就成了這樣:
想一想,iOS11引入了safeArea的一個概念:
運行效果如下:
看著高度是44.
發(fā)現(xiàn)navigationBar的高度為64窄做,但是卻不是預(yù)想的愧驱。很多開發(fā)者通過在layoutSubviews時去修改子視圖的frame。實際上并不需要椭盏,我的做法是:
iOS11不需要去設(shè)置導航欄的高度组砚,導航欄會自動頂開。
實現(xiàn)UIBarPositioning協(xié)議的barPosition方法掏颊,返回UIBarPositionTopAttached糟红,解釋為:The bar is at the top of the screen (as well as its local context), and its background extends upward—currently only enough for the status bar.
再運行效果如下:
旋轉(zhuǎn)屏幕的效果跟navigationController的navigationBar效果都一樣:
本文只提供實現(xiàn)思路,具體實現(xiàn)自己組織。