GlobalImports.swift 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. //
  2. // GlobalImports.swift
  3. // KittensTravelNotes
  4. //
  5. // Created by 100Years on 2025/7/6.
  6. //
  7. @_exported import Foundation
  8. @_exported import UIKit
  9. @_exported import SnapKit
  10. func k_Height_statusBar() -> CGFloat {
  11. var statusBarHeight: CGFloat = 0;
  12. if #available(iOS 13.0, *) {
  13. let scene = UIApplication.shared.connectedScenes.first;
  14. guard let windowScene = scene as? UIWindowScene else {return 0};
  15. guard let statusBarManager = windowScene.statusBarManager else {return 0};
  16. statusBarHeight = statusBarManager.statusBarFrame.height;
  17. } else {
  18. statusBarHeight = UIApplication.shared.statusBarFrame.height;
  19. }
  20. return statusBarHeight;
  21. }
  22. /// ②、顶部安全区高度 k_Height_safeAreaInsetsTop
  23. func k_Height_safeAreaInsetsTop() -> CGFloat {
  24. if #available(iOS 13.0, *) {
  25. let scene = UIApplication.shared.connectedScenes.first;
  26. guard let windowScene = scene as? UIWindowScene else {return 0}; // guard:如果 expression 值计算为false,则执行代码块内的 guard 语句。(必须包含一个控制语句: return、 break、 continue 或 throw。)。as?:类型转换,(还有这两种:as、as!)
  27. guard let window = windowScene.windows.first else {return 0};
  28. return window.safeAreaInsets.top;
  29. } else if #available(iOS 11.0, *) {
  30. guard let window = UIApplication.shared.windows.first else {return 0};
  31. return window.safeAreaInsets.top;
  32. }
  33. return 0;
  34. }
  35. /// ③、底部安全区高度
  36. func k_Height_safeAreaInsetsBottom() -> CGFloat {
  37. if #available(iOS 13.0, *) {
  38. let scene = UIApplication.shared.connectedScenes.first;
  39. guard let windowScene = scene as? UIWindowScene else {return 0};
  40. guard let window = windowScene.windows.first else {return 0};
  41. return window.safeAreaInsets.bottom;
  42. } else if #available(iOS 11.0, *) {
  43. guard let window = UIApplication.shared.windows.first else {return 0};
  44. return window.safeAreaInsets.bottom;
  45. }
  46. return 0;
  47. }
  48. /** 屏幕宽度 */
  49. let k_ScreenWidth = UIScreen.main.bounds.size.width
  50. /** 屏幕高度 */
  51. let k_ScreenHeight = UIScreen.main.bounds.size.height
  52. /* 导航栏高度 固定高度 = 44.0f */
  53. //let k_Height_NavContentBar :CGFloat = UINavigationBar.appearance().frame.size.height
  54. let k_Height_NavBar :CGFloat = 44.0
  55. /** 状态栏高度 */
  56. let k_Height_StatusBar :CGFloat = k_Height_statusBar()
  57. /** 状态栏+导航栏的高度 */
  58. let k_Nav_Height: CGFloat = k_Height_NavBar + k_Height_StatusBar
  59. /** 底部tabBar栏高度(不包含安全区,即:在 iphoneX 之前的手机) */
  60. let k_TabBar_Height :CGFloat = 49.0
  61. /** 底部导航栏高度(包括安全区),一般使用这个值 */
  62. let k_Height_TabBar :CGFloat = k_Height_safeAreaInsetsBottom() + k_TabBar_Height
  63. public func debugPrint<T>(_ messsage: T, file: String = #file, funcName: String = #function, lineNum: Int = #line) {
  64. #if DEBUG
  65. let fileName = (file as NSString).lastPathComponent
  66. print(Date.hmsString + " \(fileName) (\(funcName)): [\(lineNum)]- \(messsage)")
  67. #endif
  68. }
  69. public func dePrint<T>(_ messsage: T) {
  70. #if DEBUG
  71. print(Date.hmsString + " \(messsage)")
  72. #endif
  73. }
  74. public func kPresentModalVC(target:UIViewController,
  75. modelVC:UIViewController,
  76. style:UIModalPresentationStyle = .overFullScreen,
  77. transitionStyle:UIModalTransitionStyle = .coverVertical,
  78. completion: (() -> Void)? = nil){
  79. let navi = TSBaseNavigationC(rootViewController: modelVC)
  80. navi.modalPresentationStyle = style
  81. navi.modalTransitionStyle = transitionStyle
  82. target.present(navi, animated: true,completion: completion)
  83. }
  84. public func kPushVC(target:UIViewController,modelVC:UIViewController){
  85. modelVC.hidesBottomBarWhenPushed = true
  86. target.navigationController?.pushViewController(modelVC, animated: true)
  87. }
  88. public func appShortVersion() ->String{
  89. let short = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? ""
  90. return short
  91. }
  92. //设计稿为 375*812 比例,所以比例系数为 375.0/kScreenWidth
  93. let kDesignScale = k_ScreenWidth/375.0