如果你没有使用导航高度来布局一些界面,可以选择不看。
今天在维护项目时发现了一些问题,于是就写下来记录一下。仅在iOS16系统下查看了以下问题
1.项目中的一些错误:
#define NAVIGATIONBAR_HEIGHT ([UIDevice currentDevice].isFringeScreen ? 88 : 64)
类似这样的代码,默认刘海屏导航部分的高度为88.这里其实是错误的。目前在iOS16上iPhone11以前的刘海是88.以后的全部是91,iPhone14屏幕上达到了夸张的103。简单整理了一下:
iPhoneX - iPhone11:88
iPhone13 - iPhone14Plus:91
iPhone14Pro&iPhone14ProMax:103
2.布局相关变化
iPhone14Pro&iPhone14ProMax
上一些UI布局也有细微的变化。所以有时候你怎么计算都不会计算对的。如果有AutoLayout可以无视这个问题。
一下是iPhone14
上的布局,请注意self.view
的布局以及相关的导航高度:
self.view
的Y的是91,和导航高度正好对上。
iPhone14ProMax
上的UI布局如下:
iPhone14ProMax
导航高度是103,但是self.view
的Y的是97.667,比真实值差了大概5.0+的像素。同样的问题也在iPhone14Pro
上也存在。
最后:
能尽量用AutoLayout就用AutoLayout,别用frame去算。