之前的获得状态栏高度代码是

  1. func kStatusBarHeight() -> CGFloat {
  2. var statusBarHeight: CGFloat = 0
  3. if #available(iOS 13.0, *) {
  4. let statusManager = UIApplication.shared.windows.first?.windowScene?.statusBarManager
  5. statusBarHeight = statusManager?.statusBarFrame.height ?? 20.0
  6. } else {
  7. statusBarHeight = UIApplication.shared.statusBarFrame.height
  8. }
  9. return statusBarHeight
  10. }

 

上面的代码,iPhone14之前手机获得状态栏高度都是正确的,刘海屏也没问题,

但是灵动岛手机有问题,获得高度是44是错误的。iPhone14pro iPhone14pro max状态栏高度应该是56。

应该用下面的代码解决这问题

  1. func kStatusBarHeight() -> CGFloat {
  2. var statusBarHeight: CGFloat = 0
  3. if #available(iOS 13.0, *) {
  4. let window = UIApplication.shared.windows.first
  5. let topPadding = window?.safeAreaInsets.top
  6. statusBarHeight = topPadding ?? 20.0
  7. } else {
  8. statusBarHeight = UIApplication.shared.statusBarFrame.height
  9. }
  10. return statusBarHeight
  11. }