一个可以在 Swift 中以动画形式显示数字变化的标签,灵感来源于 UICountingLabel。
要运行示例项目,请克隆 repo,并首先从 Example 目录运行 pod install
。
EFCountingLabel 可以通过 CocoaPods 获得。 要安装它,只需将以下行添加到您的 Podfile 中
pod 'EFCountingLabel'
Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,并且已集成到 Swift 编译器中。
设置好 Swift 包后,将 EFCountingLabel 添加为依赖项就像将其添加到您的 Package.swift
的 dependencies
值中一样简单。
dependencies: [
.package(url: "https://github.com/EFPrefix/EFCountingLabel.git", .upToNextMinor(from: "6.0.0.0"))
]
只需以设置常规 UILabel
相同的方式初始化 EFCountingLabel
let myLabel = EFCountingLabel(frame: CGRect(x: 10, y: 10, width: 200, height: 40))
self.view.addSubview(myLabel)
您也可以将其添加到您的 xib
或 storyboard
中,只需确保将类和模块设置为 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")
}
目前有四种计数模式。
EyreFree, eyrefree@eyrefree.org
EFCountingLabel 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。