只需用 Progress SequenceType
封装循环中的 SequenceType
,就能自动获得漂亮的进度条。
在 Xcode 控制台中更新进度条不起作用,因为它不支持光标移动。 如果您想让它看起来更好,请在真实的终端中运行它。
只需像这样 for i in 1...9 { ...
创建一个常规循环,并将 1...9
范围封装在 Progress
类型中,您将自动获得一个漂亮的进度条。
import Progress
for i in Progress(1...9) {
...
}
生成以下输出
$ 4 of 9 [------------- ] ETA: 0:00:05 (at 1.01 it/s)
它也适用于所有采用 CollectionType
协议的其他类型,如字典:Progress(["key": "value", "key2": "also value"])
和数组:Progress([1, 52, 6, 26, 1])
。
您也可以手动创建进度条,而无需序列类型。
var bar = ProgressBar(count: 4)
for i in 0...3 {
bar.next()
sleep(1)
}
您可以通过组合 ProgressElementType
类型的单个构建块来配置进度条。
可以通过设置默认配置来实现
ProgressBar.defaultConfiguration = [ProgressString(string: "Percent done:"), ProgressPercent()]
从而创建以下结果
$ Percent done: 80%
或者通过在 Process 初始化程序中提供特定配置来实现
Progress(0...10, configuration: [ProgressPercent(), ProgressBarLine(barLength: 60)])
从而产生类似这样的结果
$ 100% [------------------------------------------------------------]
可用的 ProgressElementType
元素
ProgressBarLine
(实际的条。 例如 "[---------------------- ]")。ProgressIndex
(当前索引和总计数。 例如 "2 of 3")。ProgressPercent
(以百分比表示的进度。 例如 "60%")。ProgressTimeEstimates
(剩余估计时间和每秒项目数。 例如 "ETA: 00:00:02 (at 1.00 it/s)")。ProgressString
(向进度条添加任意字符串)。Progress.swift 可通过 CocoaPods 获得。 要安装它,只需将以下行添加到您的 Podfile
pod "Progress.swift"
要使用 Carthage 将 Progress.swift 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它
github "jkandzi/Progress.swift"
运行 carthage update
来构建框架,并将构建的 Progress.framework
拖到您的 Xcode 项目中。
要使用 Swift Package Manager 安装,请在您的 Package.swift
中添加以下内容
import PackageDescription
let package = Package(
name: "MyProject",
dependencies: [
.Package(url: "https://github.com/jkandzi/Progress.swift", majorVersion: 0)
]
)
您还可以将 Progress.swift
文件复制到您的 Xcode 项目中。
欢迎 fork 并提交 pull request。
Justus Kandzi, justus.kandzi@gmail.com
Progress.swift 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。