ColorHelper.swift 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // ColorHelper.swift
  3. // compdfkit_flutter
  4. //
  5. // Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved.
  6. //
  7. // THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  8. // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  9. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  10. // This notice may not be removed from this file.
  11. import UIKit
  12. class ColorHelper {
  13. static func colorWithHexString (hex:String) -> UIColor {
  14. var hexString = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
  15. // 检查颜色字符串是否有效
  16. if hexString.hasPrefix("#") {
  17. hexString.remove(at: hexString.startIndex)
  18. }
  19. // 确保字符串长度是8(包括透明度部分)
  20. if hexString.count == 8 {
  21. var rgba: UInt64 = 0
  22. Scanner(string: hexString).scanHexInt64(&rgba)
  23. let a = CGFloat((rgba >> 24) & 0xFF) / 255.0
  24. let r = CGFloat((rgba >> 16) & 0xFF) / 255.0
  25. let g = CGFloat((rgba >> 8) & 0xFF) / 255.0
  26. let b = CGFloat(rgba & 0xFF) / 255.0
  27. return UIColor(red: r, green: g, blue: b, alpha: a)
  28. } else {
  29. // 如果不是合法的8位Hex,返回透明的颜色或其他默认值
  30. return UIColor(white: 0.0, alpha: 0.0)
  31. }
  32. }
  33. }
  34. extension UIColor {
  35. func toHexString() -> String? {
  36. var red: CGFloat = 0
  37. var green: CGFloat = 0
  38. var blue: CGFloat = 0
  39. var alpha: CGFloat = 0
  40. guard self.getRed(&red, green: &green, blue: &blue, alpha: &alpha) else {
  41. return nil
  42. }
  43. let rgb: Int = (Int)(red * 255) << 16 | (Int)(green * 255) << 8 | (Int)(blue * 255) << 0
  44. return String(format: "#%06x", rgb)
  45. }
  46. }