var statusBarHeight: CGFloat!
if #available(iOS 13.0, *) {
statusBarHeight = UIApplication.shared.connectedScenes.first(where: {$0 is UIWindowScene}).flatMap({$0 as? UIWindowScene})?.statusBarManager?.statusBarFrame.size.height ?? 0
} else {
statusBarHeight = UIApplication.shared.windows.first?.windowScene?.statusBarManager?.statusBarFrame.size.height ?? 0
}
概念解析
状态栏-Status Bars
状态栏在屏幕的最上方,用于显示 时间-信号-电池。状态栏显示的信息会受到设备配置的影响。
UIApplication.shared
每一个应用程序都有自己的UIApplication对象,并且是单例,在ios程序启动之后创建的第一个对象
UIApplication.shared.connectedScenes.first(where: {$0 is UIWindowScene})
遍历connectedScenes,直到获取到元素是UIWindowScene的类返回该元素
UIApplication.shared.connectedScenes.first(where: {0 as? UIWindowScene})
将获取到的元素转化成UIWindowScene