iOS11及iPhone X适配总结

导航栏

  • 导航栏高度的变化
  1. iOS 11之前的导航栏默认高度为64pt(statusBar 20pt + NavigationBar 44pt),iOS 11之后如果设置了prefersLargeTitles = YES则为96pt,默认情况下还是64pt,
  2. 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)。如图:


    iOS11及iPhone X适配总结_第1张图片
    iPhone X之前的机型.png

    iOS11及iPhone X适配总结_第2张图片
    iPhone X机型.png
  • 导航栏图层的变化及对titleView布局的影响


    iOS11及iPhone X适配总结_第3张图片
    iOS 11之前的UINavigationBar的层级结构.png

    iOS11及iPhone X适配总结_第4张图片
    iOS 11之后的UINavigationBar的层级结构.png

    通过对iOS 11之前的UINavigationBar的层级结构和iOS 11之后的UINavigationBar的层级结构的分析可以看出:

  1. iOS 11之前导航栏的title是添加在UINavigationItemView上面,而navigationBarButton则直接添加在UINavigationBar上面,如果设置了titleView,则titleView也是直接添加在UINavigationBar上面。
  2. iOS 11之后,如果没有给titleView赋值,则titleView会直接添加在_UINavigationBarContentView上面,如果赋值了titleView,则会把titleView添加在_UITAMICAdaptorView上,而navigationBarButton被加在了_UIButtonBarStackView上,然后他们都被加在了_UINavigationBarContentView上,如图:
iOS11及iPhone X适配总结_第5张图片
iOS 11之前和iOS 11之后titleView布局.jpg

iOS11及iPhone X适配总结_第6张图片
_UITAMICAdaptorView -> _UINavigationBarContentView.png
TabBarController
  • 主要是tabBar高度及tabBarItem偏移适配,iPhone X犹豫底部安全区域的原因UITabBar高度由49pt变为了83pt。如图:


    iOS11及iPhone X适配总结_第7张图片
    iOS 11 TabBarController层次结构.53.png

    iOS11及iPhone X适配总结_第8张图片
    iPhone X TabBarController示意图.png
  • 声明:如有侵权,请联系我!

你可能感兴趣的:(iOS11及iPhone X适配总结)