EFCountingLabel 5.1.5

EFCountingLabel 5.1.5

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布最新发布2023年7月
SPM支持 SPM

EyreFreeZhiyu Zhu 维护。




一个在 Swift 中显示数字变化的动画标签,灵感来源于 UICountingLabel

中文介绍

概览

示例

要运行示例项目,首先从仓库克隆,然后从 Example 目录运行 pod install

要求

版本 需求
1.x Xcode 8.0+
Swift 3.0+
iOS 8.0+
4.x Xcode 9.0+
Swift 4.0+
iOS 8.0+
5.x Xcode 10.0+
Swift 5.0+
iOS 8.0+

安装

EFCountingLabel 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'EFCountingLabel'

设置

只需像设置常规 UILabel 一样初始化 EFCountingLabel

let myLabel = EFCountingLabel(frame: CGRect(x: 10, y: 10, width: 200, height: 40))
self.view.addSubview(myLabel)

您还可以将其添加到您的 xibstoryboard,只需确保将类和模块设置为 EFCountingLabel

使用

设置标签的格式。在它更新时,将根据您如何格式化它用字符串填充,您可以提供一个 formatBlock,这允许您更好地控制文本的格式。如果不提供,则默认格式为 "%d"

myLabel.setUpdateBlock { value, label in
    label.text = String(format: "%.2f%%", value)
}

可选,设置定时函数。默认为 EFTimingFunction.linear,这将不会改变速度,直到它达到结束。

myLabel.counter.timingFunction = EFTimingFunction.easeOut(easingRate: 3)

想开始计数时,只需调用

myLabel.countFrom(5, to: 100)

您也可以指定持续时间。默认为 2.0 秒。

myLabel.countFrom(1, to: 10, withDuration: 3.0)

您可以使用常用的方便方法进行计数,如

myLabel.countFromCurrentValueTo(100)
myLabel.countFromZeroTo(100)

背后,这些方便的方法使用一个基本方法,该方法的完整签名如下

myLabel.countFrom(startValue: CGFloat, to: CGFloat, withDuration: TimeInterval)

您可以使用 currentValue 方法获取标签的当前值(即使在动画过程中也能正确工作)

let currentValue: CGFloat = myLabel.counter.currentValue

可选,您还可以指定一个 completionBlock,当标签完成计数时执行操作

myLabel.completionBlock = { () in
    print("finish")
}

模式

目前有四种计数模式。

  • EFTimingFunction.linear:从起点线性计数到终点;
  • EFTimingFunction.easeIn: Ease In 开始速度较慢,加速计数并在达到终点时突然停止,停止在最终值;
  • EFTimingFunction.easeOut:Ease Out 开始较快,并在达到目标值时减速。
  • EFTimingFunction.easeInOut: 缓冲进出效果开始速度较慢,中间加快,然后接近目的地时速度减慢。这是一条优美、平滑且视觉效果良好的曲线,是默认方法;
  • EFTimingFunction.easeInBounce;
  • EFTimingFunction.easeOutBounce.

使用 EFCountingLabel 的应用

作者

EyreFree, [email protected]

许可信息

EFCountingLabel 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。