ColorHelper.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //
  2. // ColorHelper.swift
  3. // compdfkit_flutter
  4. //
  5. // Created by Xiaolong Liu on 2024/7/15.
  6. //
  7. import UIKit
  8. class ColorHelper {
  9. static func colorWithHexString (hex:String) -> UIColor {
  10. var hexString = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
  11. // 检查颜色字符串是否有效
  12. if hexString.hasPrefix("#") {
  13. hexString.remove(at: hexString.startIndex)
  14. }
  15. // 确保字符串长度是8(包括透明度部分)
  16. if hexString.count == 8 {
  17. var rgba: UInt64 = 0
  18. Scanner(string: hexString).scanHexInt64(&rgba)
  19. let a = CGFloat((rgba >> 24) & 0xFF) / 255.0
  20. let r = CGFloat((rgba >> 16) & 0xFF) / 255.0
  21. let g = CGFloat((rgba >> 8) & 0xFF) / 255.0
  22. let b = CGFloat(rgba & 0xFF) / 255.0
  23. return UIColor(red: r, green: g, blue: b, alpha: a)
  24. } else {
  25. // 如果不是合法的8位Hex,返回透明的颜色或其他默认值
  26. return UIColor(white: 0.0, alpha: 0.0)
  27. }
  28. }
  29. }
  30. extension UIColor {
  31. func toHexString() -> String? {
  32. var red: CGFloat = 0
  33. var green: CGFloat = 0
  34. var blue: CGFloat = 0
  35. var alpha: CGFloat = 0
  36. guard self.getRed(&red, green: &green, blue: &blue, alpha: &alpha) else {
  37. return nil
  38. }
  39. let rgb: Int = (Int)(red * 255) << 16 | (Int)(green * 255) << 8 | (Int)(blue * 255) << 0
  40. return String(format: "#%06x", rgb)
  41. }
  42. }