前言
最近发现 iOS 14 的状态栏高度不知道什么时候就变了,乱七八糟的,之前写的宏:
//判断是否是iPhone X
public let isiPhoneXLater = Bool(SCREEN_WIDTH >= 375.0 && SCREEN_HEIGHT >= 812.0 && isPhone)
/// 状态栏高度
public let STATUSBAR_HEIGHT = CGFloat(isiPhoneXLater ? 44 : 20)
也已经不好使了,只适用于 iOS 14 之前的。
测试对比
因为 iOS 14 之后的各种尺寸都有,乱的一笔,和iOS 13.5 对比大概如下:
测试Xcode版本
用系统的 API 获取高度:
/// Status Bar 的 Frame
public let StatusBarFrame = UIApplication.shared.statusBarFrame
/// Status Bar 的 Height
public let StatusBarHeight = StatusBarFrame.height
po UIApplication.shared.statusBarFrame
iPhone 11
iOS 13.5
▿ (0.0, 0.0, 414.0, 44.0)
iOS 14.2
▿ (0.0, 0.0, 414.0, 48.0)
iPhone 11 Pro
iOS 13.5
▿ (0.0, 0.0, 375.0, 44.0)
iOS 14.2
▿ (0.0, 0.0, 375.0, 44.0)
iPhone 11 Pro Max
iOS 13.5
▿ (0.0, 0.0, 414.0, 44.0)
iOS 14.2
▿ (0.0, 0.0, 414.0, 44.0)
iPhone 12,iPhone 12 Pro,iPhone 12 Pro Max
iOS 14.2
▿ (0.0, 0.0, 390.0, 47.0)
iPhone 12 mini
▿ (0.0, 0.0, 375.0, 44.0)
最坑的就是这个机型,系统获取的是 44 但真实的并不是 44 ,感觉应该是系统的 Bug。