QSLConst.swift 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // QSLConst.swift
  3. // QuickSearchLocation
  4. //
  5. // Created by mac on 2024/4/10.
  6. //
  7. import Foundation
  8. import UIKit
  9. struct QSLConst {
  10. // MARK: 1.1、是否是缺口屏幕(刘海屏)或者灵动岛的屏幕
  11. // 是否是缺口屏幕(刘海屏)或者灵动岛的屏幕
  12. static var qsl_isIPhoneNotch: Bool {
  13. if #available(iOS 11.0, *) {
  14. if let window = UIApplication.keyWindow {
  15. return window.safeAreaInsets.bottom > 0
  16. } else {
  17. return false
  18. }
  19. } else {
  20. return UIApplication.shared.statusBarFrame.height > 20
  21. }
  22. }
  23. // MARK: 2.1、屏幕的宽
  24. /// 屏幕的宽
  25. static var qsl_kScreenW: CGFloat { return UIScreen.main.bounds.width }
  26. // MARK: 2.2、屏幕的高
  27. /// 屏幕的高
  28. static var qsl_kScreenH: CGFloat { return UIScreen.main.bounds.height }
  29. // MARK: 2.3、获取statusBar的高度
  30. /// 获取statusBar的高度
  31. static var qsl_kStatusBarFrameH: CGFloat {
  32. if #available(iOS 13.0, *) {
  33. let window: UIWindow? = UIApplication.shared.windows.first
  34. let statusBarHeight = (window?.windowScene?.statusBarManager?.statusBarFrame.height) ?? 0
  35. return statusBarHeight
  36. } else {
  37. // 防止界面没有出来获取为0的情况
  38. return UIApplication.shared.statusBarFrame.height > 0 ? UIApplication.shared.statusBarFrame.height : 44
  39. }
  40. }
  41. // MARK: 2.4、获取导航栏的高度
  42. /// 获取导航栏的高度
  43. static var qsl_kNavFrameH: CGFloat { return 44 + qsl_kStatusBarFrameH }
  44. // MARK: 2.5、屏幕底部Tabbar高度
  45. /// 屏幕底部Tabbar高度
  46. static var qsl_kTabbarFrameH: CGFloat { return QSLConst.qsl_isIPhoneNotch ? 83 : 49 }
  47. // MARK: 2.6、屏幕底部刘海高度
  48. /// 屏幕底部刘海高度
  49. static var qsl_kTabbarBottom: CGFloat { return QSLConst.qsl_isIPhoneNotch ? 34 : 0 }
  50. // MARK: 2.7、屏幕比例
  51. /// 屏幕比例
  52. static var qsl_kPixel: CGFloat { return 1.0 / UIScreen.main.scale }
  53. static var qsl_kScale: CGFloat { return QSLConst.qsl_kScreenW / CGFloat(375.0) }
  54. }