当前位置:   article > 正文

基于swift4.2常见的全局常量和函数集合(objective-c称之为宏定义,swift没有宏这个概念_swift macro

swift macro

基于swift4.2常见的全局常量和函数集合(objective-c称之为宏定义,swift没有宏这个概念),如有错误,请指出,本人立马做出修改,谢谢

GitHub:https://github.com/WOHANGO/swiftmacro.git     如果满意,请献上您的stat

  1. //
  2. // Common.swift
  3. // BSProject
  4. //
  5. // Created by 吳梓杭 on 2018/7/1.
  6. // Copyright © 2018年 吳梓杭. All rights reserved.
  7. //
  8. import UIKit
  9. //获取沙盒Document路径
  10. let kDocumentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
  11. //获取沙盒Cache路径
  12. let kCachePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true).first
  13. //获取沙盒temp路径
  14. let kTempPath = NSTemporaryDirectory()
  15. //颜色
  16. func kRGBAColor(_ r: CGFloat,_ g: CGFloat,_ b: CGFloat,_ a: CGFloat) -> UIColor {
  17. return UIColor.init(red: r, green: g, blue: b, alpha: a)
  18. }
  19. func kRGBColor(_ r: CGFloat,_ g: CGFloat,_ b: CGFloat) -> UIColor {
  20. return UIColor.init(red: r, green: g, blue: b, alpha: 1.0)
  21. }
  22. func kHexColorA(_ HexString: String,_ a: CGFloat) ->UIColor {
  23. return UIColor.colorWith(hexString: HexString, alpha: a)
  24. }
  25. func kHexColor(_ HexString: String) ->UIColor {
  26. return UIColor.colorWith(hexString: HexString)
  27. }
  28. let kColor_nil = UIColor.clear
  29. let kColor_000000 = kHexColor("000000")
  30. let kColor_111111 = kHexColor("111111")
  31. let kColor_222222 = kHexColor("222222")
  32. let kColor_333333 = kHexColor("333333")
  33. let kColor_444444 = kHexColor("444444")
  34. let kColor_555555 = kHexColor("555555")
  35. let kColor_666666 = kHexColor("666666")
  36. let kColor_777777 = kHexColor("777777")
  37. let kColor_888888 = kHexColor("888888")
  38. let kColor_999999 = kHexColor("999999")
  39. let kColor_aaaaaa = kHexColor("aaaaaa")
  40. let kColor_bbbbbb = kHexColor("bbbbbb")
  41. let kColor_cccccc = kHexColor("cccccc")
  42. let kColor_dddddd = kHexColor("dddddd")
  43. let kColor_eeeeee = kHexColor("eeeeee")
  44. let kColor_ffffff = kHexColor("ffffff")
  45. let kColor_ff0000 = kHexColor("ff0000") //大红
  46. let kColor_00ff00 = kHexColor("00ff00") //大黄
  47. let kColor_0000ff = kHexColor("0000ff") //大蓝
  48. //开发的时候打印,但是发布的时候不打印,使用方法,输入print(message: "输入")
  49. func print<T>(message: T, fileName: String = #file, methodName: String = #function, lineNumber: Int = #line) {
  50. #if DEBUG
  51. //获取当前时间
  52. let now = Date()
  53. // 创建一个日期格式器
  54. let dformatter = DateFormatter()
  55. dformatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"
  56. // 要把路径最后的字符串截取出来
  57. let lastName = ((fileName as NSString).pathComponents.last!)
  58. print("\(dformatter.string(from: now)) [\(lastName)][第\(lineNumber)行] \n\t\t \(message)")
  59. #endif
  60. }
  61. // UserDefaults 操作
  62. let kUserDefaults = UserDefaults.standard
  63. func kUserDefaultsRead(_ KeyStr: String) -> String {
  64. return kUserDefaults.string(forKey: KeyStr)!
  65. }
  66. func kUserDefaultsWrite(_ obj: Any, _ KeyStr: String) {
  67. kUserDefaults.set(obj, forKey: KeyStr)
  68. }
  69. func kUserValue(_ A: String) -> Any? {
  70. return kUserDefaults.value(forKey: A)
  71. }
  72. //获取屏幕大小
  73. let kUIScreenSize = UIScreen.main.responds(to: #selector(getter: UIScreen.nativeBounds)) ? CGSize(width: UIScreen.main.nativeBounds.size.width / UIScreen.main.nativeScale, height: UIScreen.main.nativeBounds.size.height / UIScreen.main.nativeScale) : UIScreen.main.bounds.size
  74. let kUIScreenWidth = kUIScreenSize.width
  75. let kUIScreenHeight = kUIScreenSize.height
  76. let kUIScreenBounds = UIScreen.main.bounds
  77. //APP版本号
  78. let kAppVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"]
  79. //当前系统版本号
  80. let kVersion = (UIDevice.current.systemVersion as NSString).floatValue
  81. //检测用户版本号
  82. let kiOS12 = (kVersion >= 12.0)
  83. let kiOS11 = (kVersion >= 11.0 && kVersion < 12.0)
  84. let kiOS10 = (kVersion >= 10.0 && kVersion < 11.0)
  85. let kiOS9 = (kVersion >= 9.0 && kVersion < 10.0)
  86. let kiOS8 = (kVersion >= 8.0 && kVersion < 9.0)
  87. let kiOS12Later = (kVersion >= 12.0)
  88. let kiOS11Later = (kVersion >= 11.0)
  89. let kiOS10Later = (kVersion >= 10.0)
  90. let kiOS9Later = (kVersion >= 9.0)
  91. let kiOS8Later = (kVersion >= 8.0)
  92. //获取当前语言
  93. let kAppCurrentLanguage = Locale.preferredLanguages[0]
  94. //判断是否为iPhone
  95. let kDeviceIsiPhone = (UI_USER_INTERFACE_IDIOM() == .phone)
  96. //判断是否为iPad
  97. let kDeviceIsiPad = (UI_USER_INTERFACE_IDIOM() == .pad)
  98. //判断 iPhone 的屏幕尺寸
  99. let kSCREEN_MAX_LENGTH = max(kUIScreenWidth, kUIScreenHeight)
  100. let kSCREEN_MIN_LENGTH = min(kUIScreenWidth, kUIScreenHeight)
  101. //适配 350 375 414 568 667 736
  102. func kAutoLayoutWidth(_ width: CGFloat) -> CGFloat {
  103. return width*kUIScreenWidth / 375
  104. }
  105. func kAutoLayoutHeigth(_ height: CGFloat) -> CGFloat {
  106. return height*kUIScreenHeight / 667
  107. }
  108. //机型判断
  109. let kUI_IPHONE = (UIDevice.current.userInterfaceIdiom == .phone)
  110. let kUI_IPHONE5 = (kUI_IPHONE && kSCREEN_MAX_LENGTH == 568.0)
  111. let kUI_IPHONE6 = (kUI_IPHONE && kSCREEN_MAX_LENGTH == 667.0)
  112. let kUI_IPHONEPLUS = (kUI_IPHONE && kSCREEN_MAX_LENGTH == 736.0)
  113. let kUI_IPHONEX = (kUI_IPHONE && kSCREEN_MAX_LENGTH > 780.0)
  114. //获取状态栏、标题栏、导航栏高度
  115. let kUIStatusBarHeight: CGFloat = UIApplication.shared.statusBarFrame.size.height
  116. let kUINavigationBarHeight: CGFloat = kUI_IPHONEX ? 88 : 44
  117. let KUITabBarHeight: CGFloat = kUI_IPHONEX ? 83 : 49
  118. //navigationBarHeight默认高度44 (iPhoneX 88)
  119. //tabBarHeight默认高度49 (iPhoneX 83)
  120. // 注册通知
  121. func kNOTIFY_ADD(observer: Any, selector: Selector, name: String) {
  122. return NotificationCenter.default.addObserver(observer, selector: selector, name: Notification.Name(rawValue: name), object: nil)
  123. }
  124. // 发送通知
  125. func kNOTIFY_POST(name: String, object: Any) {
  126. return NotificationCenter.default.post(name: Notification.Name(rawValue: name), object: object)
  127. }
  128. // 移除通知
  129. func kNOTIFY_REMOVE(observer: Any, name: String) {
  130. return NotificationCenter.default.removeObserver(observer, name: Notification.Name(rawValue: name), object: nil)
  131. }
  132. //代码缩写
  133. let kApplication = UIApplication.shared
  134. let kAPPKeyWindow = kApplication.keyWindow
  135. let kAppDelegate = kApplication.delegate
  136. let kAppNotificationCenter = NotificationCenter.default
  137. let kAppRootViewController = kAppDelegate?.window??.rootViewController
  138. //字体 字号
  139. func kFontSize(_ a: CGFloat) -> UIFont {
  140. return UIFont.systemFont(ofSize: a)
  141. }
  142. func kFontBoldSize(_ a: CGFloat) -> UIFont {
  143. return UIFont.boldSystemFont(ofSize: a)
  144. }
  145. func kFontForIPhone5or6Size(_ a: CGFloat, _ b: CGFloat) -> UIFont {
  146. return kUI_IPHONE5 ? kFontSize(a) : kFontSize(b)
  147. }
  148. /**
  149. 字符串是否为空
  150. @param str NSString 类型 和 子类
  151. @return BOOL类型 true or false
  152. */
  153. func kStringIsEmpty(_ str: String!) -> Bool {
  154. if str.isEmpty {
  155. return true
  156. }
  157. if str == nil {
  158. return true
  159. }
  160. if str.count < 1 {
  161. return true
  162. }
  163. if str == "(null)" {
  164. return true
  165. }
  166. if str == "null" {
  167. return true
  168. }
  169. return false
  170. }
  171. // 字符串判空 如果为空返回@“”
  172. func kStringNullToempty(_ str: String) -> String {
  173. let resutl = kStringIsEmpty(str) ? "" : str
  174. return resutl
  175. }
  176. func kStringNullToReplaceStr(_ str: String,_ replaceStr: String) -> String {
  177. let resutl = kStringIsEmpty(str) ? replaceStr : str
  178. return resutl
  179. }
  180. /**
  181. 数组是否为空
  182. @param array NSArray 类型 和 子类
  183. @return BOOL类型 true or false
  184. */
  185. func kArrayIsEmpty(_ array: [String]) -> Bool {
  186. let str: String! = array.joined(separator: "")
  187. if str == nil {
  188. return true
  189. }
  190. if str == "(null)" {
  191. return true
  192. }
  193. if array.count == 0 {
  194. return true
  195. }
  196. if array.isEmpty {
  197. return true
  198. }
  199. return false
  200. }
  201. /**
  202. 字典是否为空
  203. @param dic NSDictionary 类型 和子类
  204. @return BOOL类型 true or false
  205. */
  206. func kDictIsEmpty(_ dict: NSDictionary) -> Bool {
  207. let str: String! = "\(dict)"
  208. if str == nil {
  209. return true
  210. }
  211. if str == "(null)" {
  212. return true
  213. }
  214. if dict .isKind(of: NSNull.self) {
  215. return true
  216. }
  217. if dict.allKeys.count == 0 {
  218. return true
  219. }
  220. return false
  221. }


uicolor部分

  1. //
  2. // UIColor+WUIKit.swift
  3. // WUIKit_Demo
  4. //
  5. // Created by 吳梓杭 on 2018/7/5.
  6. // Copyright © 2018年 吳梓杭. All rights reserved.
  7. //
  8. import UIKit
  9. extension UIColor {
  10. /// 传入一个16进制的字符串,返回该16进制代表的颜色(默认alpha位1)
  11. ///
  12. /// - Parameter hexString: 代表颜色的16进制字符串
  13. /// - Returns: 该16进制表示的颜色
  14. static func colorWith(hexString: String) -> UIColor {
  15. return UIColor.colorWith(hexString: hexString, alpha: 1.0)
  16. }
  17. /// 传入一个16进制的字符串,返回该16进制代表的颜色
  18. ///
  19. /// - Parameter hexString: 代表颜色的16进制字符串,支持@“#123456”、 @“0X123456”、 @“123456”三种格式
  20. /// - alpha: 颜色的透明度
  21. /// - Returns: 该16进制表示的颜色
  22. static func colorWith(hexString: String, alpha: CGFloat) -> UIColor {
  23. //删除字符串中的空格
  24. var cString = hexString.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased()
  25. // strip 0X if it appears
  26. //如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾
  27. if cString.hasPrefix("0X") {
  28. cString = ((cString as NSString).substring(from: 2) as NSString) as String
  29. }
  30. //如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾
  31. if cString.hasPrefix("#") {
  32. cString = ((cString as NSString).substring(from: 1) as NSString) as String
  33. }
  34. // String should be 6 or 8 characters
  35. if cString.count < 6 {
  36. print("colorWithHexString is wrong!")
  37. return UIColor.clear
  38. }
  39. // Separate into r, g, b substrings
  40. let rString = (cString as NSString).substring(to: 2)
  41. let gString = ((cString as NSString).substring(from: 2) as NSString).substring(to: 2)
  42. let bString = ((cString as NSString).substring(from: 4) as NSString).substring(to: 2)
  43. var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0;
  44. Scanner(string: rString).scanHexInt32(&r)
  45. Scanner(string: gString).scanHexInt32(&g)
  46. Scanner(string: bString).scanHexInt32(&b)
  47. return UIColor.init(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha)
  48. }
  49. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/223719
推荐阅读
相关标签
  

闽ICP备14008679号