Tencent / QMUI_iOS

QMUI iOS——致力于提高项目 UI 开发效率的解决方案
http://qmuiteam.com/ios
Other
7.05k stars 1.37k forks source link

iOS 15,当状态栏隐藏时,StatusBarHeightConstant 在 12 mini 和 13 mini 下的返回值不准确 #1326

Closed nevsee closed 1 year ago

nevsee commented 2 years ago

12mini和13mini高度为50

MoLice commented 2 years ago

并没有错?50是哪里测到的? image

nevsee commented 2 years ago

企业微信截图_377b5285-1ef8-4fdb-903f-1ad5cd480086

难道是iOS15 才会这样?

MoLice commented 2 years ago

以 iPhone 12 mini 为例。

在 iOS 14 里,这几个的值为:

StatusBarHeight = 44;
StatusBarHeightConstant = 44;
CGRectGetHeight(UIApplication.sharedApplication.statusBarFrame) = 44;
navigationBar.minY = 50; // 关键在这里,statusBar 底部是44,navigationBar 顶部却是 50,意味着中间有6的空隙
navigationBar.maxY = 94;// 对业务的内容布局无影响,不管 iOS 14、15 都是94

在 iOS 15 里,这几个的值为:

StatusBarHeight = 50;
StatusBarHeightConstant = 44;
CGRectGetHeight(UIApplication.sharedApplication.statusBarFrame) = 50;
navigationBar.minY = 50;// iOS 15 里两个 bar 从 frame 的角度来看是紧贴在一起的
navigationBar.maxY = 94;// 对业务的内容布局无影响,不管 iOS 14、15 都是94

不清楚系统在 iOS 14 下为什么会有 statusBar 是 44 但 navigationBar.minY 是 50 的区别,iOS 14 里 QMUI 的宏的值保证与系统动态获取的值一致即可。 iOS 15 下调整为返回 50。

但业务布局建议统一都以 UIViewController.qmui_navigationBarMaxYInViewCoordinator 为参考标准,就不会表现出这种差异。

MoLice commented 2 years ago

issue 里提的场景应该有个前提,就是 statusBarHidden = YES,issue 当初并没有明确指出,新版本将会重新修复这个问题。

MoLice commented 1 year ago

已发布 4.5.0 修复该问题。