2018-08-20 iOS導航欄的那些事

weixin_34249678發表於2018-08-20

UINavigationController 在iOS開發體系裡,是一個容器類的控制器,同時管理控制器的堆疊。繼承自UIViewController。

1.內容頁面的原點
在iOS7之前,導航控制器裡的控制器頁面,從導航欄的底部開始佈局。頁面原點在螢幕左邊,導航欄底部(0,stautsHeight+naviHeight)。
iOS7之後,頁面原點移至螢幕原點(0,0),可見區域為整個螢幕,但是頁面內容會被狀態列和導航欄遮擋。


766567-9f947744824021f0.png
image.png

只有當設定導航欄背景之後,原點才會移回至導航欄底部。


766567-88b07a07a0abf940.png
image.png

但是,若設定導航欄隱藏,原點依舊移至螢幕原點(0,0)


766567-8feb289b7b43cf14.png
image.png

2.內容頁面的高度

766567-16aff98e96e64fe1.png
image.png

本圖來源:https://www.jianshu.com/p/20681c58d2be

iPhone8 (origin = (x = 0, y = 0), size = (width = 375, height = 667)) 可見,雖然內容頁的原點,移至導航欄底部,但是內容頁的尺寸,並沒有改變,所以我們在新增subview的時候,需要將高度減去狀態列+導航欄高度。

3.導航欄的結構
4.導航欄個性化定製

相關文章