SliderImagesDesignable.swift 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //
  2. // Created by phimage on 25/03/2017.
  3. // Copyright © 2017 IBAnimatable. All rights reserved.
  4. //
  5. import UIKit
  6. /// Protocol for designing slider image
  7. public protocol SliderImagesDesignable: class {
  8. /**
  9. * The thumb image when slider state is `normal`
  10. */
  11. var thumbImage: UIImage? { get set }
  12. /**
  13. * The thumb image when slider state is `highlighted`
  14. */
  15. var thumbHighlightedImage: UIImage? { get set }
  16. /**
  17. * The minimum track image when slider state is `normal`
  18. */
  19. var minimumTrackImage: UIImage? { get set }
  20. /**
  21. * The minimum track image when slider state is `highlighted`
  22. */
  23. var minimumTrackHighlightedImage: UIImage? { get set }
  24. /**
  25. * The maximum track image when slider state is `normal`
  26. */
  27. var maximumTrackImage: UIImage? { get set }
  28. /**
  29. * The maximum track image when slider state is `highlighted`
  30. */
  31. var maximumTrackHighlightedImage: UIImage? { get set }
  32. }
  33. public extension SliderImagesDesignable where Self: UISlider {
  34. func configureThumbImage() {
  35. let highlightedImage = thumbHighlightedImage ?? thumbImage
  36. setThumbImage(thumbImage, for: .normal)
  37. setThumbImage(highlightedImage, for: .highlighted)
  38. }
  39. func configureMinimumTrackImage() {
  40. let highlightedImage = minimumTrackHighlightedImage ?? minimumTrackImage
  41. setMinimumTrackImage(minimumTrackImage, for: .normal)
  42. setMinimumTrackImage(highlightedImage, for: .highlighted)
  43. }
  44. func configureMaximumTrackImage() {
  45. let highlightedImage = maximumTrackHighlightedImage ?? maximumTrackImage
  46. setMaximumTrackImage(maximumTrackImage, for: .normal)
  47. setMaximumTrackImage(highlightedImage, for: .highlighted)
  48. }
  49. }