只需将循环中的 SequenceType
用 Progress 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 文件。