iOS11及iPhone X适配总结
2017-11-07 本文已影响100人
SPIREJ
导航栏
- 导航栏高度的变化
- iOS 11之前的导航栏默认高度为64pt(statusBar 20pt + NavigationBar 44pt),iOS 11之后如果设置了
prefersLargeTitles = YES
则为96pt,默认情况下还是64pt,- iPhone X:iPhone X的statusBar由以前的20pt变成了44pt,所以iPhone X上的NavigationBar变为了88pt(statusBar 44pt + NavigationBar 44pt)
-
Largetitle
iOS 11导航栏多了一个LargeTitleView,专门显示打字标题用的,整个导航栏的高度达到96(不包括状态栏高度,iPhone X之前20pt,iPhone X40pt)。如图:
iPhone X之前的机型.png
iPhone X机型.png -
导航栏图层的变化及对titleView布局的影响
iOS 11之前的UINavigationBar的层级结构.png
iOS 11之后的UINavigationBar的层级结构.png
通过对iOS 11之前的UINavigationBar的层级结构和iOS 11之后的UINavigationBar的层级结构的分析可以看出:
iOS 11之前和iOS 11之后titleView布局.jpg
- iOS 11之前导航栏的title是添加在
UINavigationItemView
上面,而navigationBarButton则直接添加在UINavigationBar
上面,如果设置了titleView,则titleView也是直接添加在UINavigationBar
上面。- iOS 11之后,如果没有给titleView赋值,则titleView会直接添加在
_UINavigationBarContentView
上面,如果赋值了titleView,则会把titleView添加在_UITAMICAdaptorView
上,而navigationBarButton被加在了_UIButtonBarStackView
上,然后他们都被加在了_UINavigationBarContentView
上,如图:
_UITAMICAdaptorView -> _UINavigationBarContentView.png
TabBarController
-
主要是tabBar高度及tabBarItem偏移适配,iPhone X犹豫底部安全区域的原因UITabBar高度由49pt变为了83pt。如图:
iOS 11 TabBarController层次结构.53.png
iPhone X TabBarController示意图.png - 声明:如有侵权,请联系我!