JXSegmentedIndicatorRainbowLineView.swift 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. //
  2. // JXSegmentedIndicatorRainbowLineView.swift
  3. // JXSegmentedView
  4. //
  5. // Created by jiaxin on 2018/12/28.
  6. // Copyright © 2018 jiaxin. All rights reserved.
  7. //
  8. import UIKit
  9. /// 会无视indicatorColor属性,以indicatorColors为准
  10. open class JXSegmentedIndicatorRainbowLineView: JXSegmentedIndicatorLineView {
  11. /// 数量需要与item的数量相等。默认空数组,必须要赋值该属性。segmentedView在reloadData的时候,也要一并更新该属性,不然会出现数组越界。
  12. open var indicatorColors = [UIColor]()
  13. open override func refreshIndicatorState(model: JXSegmentedIndicatorSelectedParams) {
  14. super.refreshIndicatorState(model: model)
  15. backgroundColor = indicatorColors[model.currentSelectedIndex]
  16. }
  17. open override func contentScrollViewDidScroll(model: JXSegmentedIndicatorTransitionParams) {
  18. super.contentScrollViewDidScroll(model: model)
  19. guard canHandleTransition(model: model) else {
  20. return
  21. }
  22. backgroundColor = JXSegmentedViewTool.interpolateColor(from: indicatorColors[model.leftIndex], to: indicatorColors[model.rightIndex], percent: model.percent)
  23. }
  24. open override func selectItem(model: JXSegmentedIndicatorSelectedParams) {
  25. super.selectItem(model: model)
  26. backgroundColor = indicatorColors[model.currentSelectedIndex]
  27. }
  28. }