Swift4.0--一個好用的金融類遊標卡尺

weixin_33976072發表於2018-02-07

Swift--一個好用的金融類遊標卡尺

思路:

使用UICollectionView製作一個遊標卡尺,每一個cell代表一個刻度區間,每個區間間隔值、區間分割份數和卡尺樣式等都是可設定的。通過代理協議,監聽卡尺的滾動值,設定卡尺的顯示值等等。也可以設定預設最大可用金額,當使用者滾動卡尺超過最大可用金額時自動回滾等(自己專案中使用到)。github

效果圖

877439-cf1ea51440253eec.png
卡尺效果圖1

877439-d7c2d80ee72c5afe.png
卡尺效果圖2

初始化方法如下:

/// 遊標卡尺
///
/// - Parameters:
///   - frame: 卡尺大小
///   - min: 卡尺最小值
///   - max: 卡尺最大值
///   - part: 每個區被分割的分數
///   - step: 一個區間的大小,預設1000
///   - unit: 單位
///   - numFontSize: 數值文字大小
///   - endNum: 最大有效值
///   - endText: 最大有效值文案
///   - endTextColor: 最大有效值文案顏色
///   - endtextFontSize: 最大有效值文案字型大小
///   - strokeColor: 卡尺顏色
public init(frame: CGRect, strokeColor: UIColor, middleLineColor: UIColor, min: CGFloat, max: CGFloat, part: Int = default, step: Int = default, unit: String = default, numFontSize: CGFloat, endNum: CGFloat, endText: String, endTextColor: UIColor, endtextFontSize: CGFloat)

如果是網路請求返回的數值,需要實時更新卡尺的,可呼叫

/// 更新遊標卡尺
///
/// - Parameters:
///   - min: 卡尺最小值
///   - max: 卡尺最大值
///   - part: 每個區被分割的分數
///   - step: 一個區間的大小,預設1000
///   - unit: 單位
///   - numFontSize: 數值文字大小
///   - endNum: 最大有效值
///   - endText: 最大有效值文案
///   - endTextColor: 最大有效值文案顏色
///   - endtextFontSize: 最大有效值文案字型大小
internal func reloadRulerView(min: CGFloat, max: CGFloat, part: Int = default, step: Int = default, unit: String = default, numFontSize: CGFloat, endNum: CGFloat, endText: String, endTextColor: UIColor, endtextFontSize: CGFloat)

設定卡尺的位置方法

/// 設定卡尺顯示值
///
/// - Parameter endN: 指定的值
public func scrollToEndNumber(endN: CGFloat, animated: Bool = default)

卡尺互動協議

/// 滾動時,返回當前值
///
/// - Parameters:
///   - value: 當前值
internal func scrollViewDidScroll(value: CGFloat)

/// 尺子即將被拖拽
///
/// - Parameter value: 當前值
internal func scrollViewWillBeginDragging(value: CGFloat)

/// 尺子停止滾動協議
///
/// - Parameter value: 停止滾動值
internal func scrollViewDidEndDragging(value: CGFloat)

/// 尺子滾動動畫停止協議
///
/// - Parameter value: 停止滾動值
internal func scrollViewDidEndScrollingAnimation(value: CGFloat)

程式碼請移步github

相關文章