UIColor.swift 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //
  2. // UIColor.swift
  3. // LoopKitUI
  4. //
  5. // Copyright © 2018 LoopKit Authors. All rights reserved.
  6. //
  7. import UIKit
  8. private class FrameworkBundle {
  9. static let main = Bundle(for: FrameworkBundle.self)
  10. }
  11. private func BundleColor(_ name: String, compatibleWith traitCollection: UITraitCollection? = nil) -> UIColor? {
  12. return UIColor(named: name, in: FrameworkBundle.main, compatibleWith: traitCollection)
  13. }
  14. extension UIColor {
  15. @nonobjc static let lightenedInsulin = BundleColor("Lightened Insulin") ?? systemOrange
  16. @nonobjc static let darkenedInsulin = BundleColor("Darkened Insulin") ?? systemOrange
  17. static func interpolatingBetween(_ first: UIColor, _ second: UIColor, biasTowardSecondColor bias: CGFloat = 0.5) -> UIColor {
  18. let (r1, g1, b1, a1) = first.components
  19. let (r2, g2, b2, a2) = second.components
  20. return UIColor(
  21. red: (r2 - r1) * bias + r1,
  22. green: (g2 - g1) * bias + g1,
  23. blue: (b2 - b1) * bias + b1,
  24. alpha: (a2 - a1) * bias + a1
  25. )
  26. }
  27. var components: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
  28. var r, g, b, a: CGFloat
  29. (r, g, b, a) = (0, 0, 0, 0)
  30. getRed(&r, green: &g, blue: &b, alpha: &a)
  31. return (red: r, green: g, blue: b, alpha: a)
  32. }
  33. }