测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | Apache 2 |
发布上次发布 | 2018年3月 |
SPM支持 SPM | ✗ |
由 Dan Loewenherz 维护。
完全可自定义的圆形进度条,使用 Swift 编写。
要运行示例项目,请克隆仓库,然后首先从 Example 目录中运行 pod install
。您也可以在 Appetize.io 上查看示例应用。
在您的文件顶部,确保导入 "ConcentricProgressRingView"
import ConcentricProgressRingView
然后,在您的视图控制器中实例化 ConcentricProgressRingView
func viewDidLoad() {
super.viewDidLoad()
let fgColor1 = UIColor.yellow
let bgColor1 = UIColor.darkGray
let fgColor2 = UIColor.green
let bgColor2 = UIColor.darkGray
let rings = [
ProgressRing(color: fgColor1, backgroundColor: bgColor1, width: 18),
ProgressRing(color: fgColor2, backgroundColor: bgColor2, width: 18),
]
let margin: CGFloat = 2
let radius: CGFloat = 80
let progressRingView = ConcentricProgressRingView(center: view.center, radius: radius, margin: margin, rings: rings)
view.addSubview(progressRingView)
}
您可以根据需要自定义宽度、边距和半径,以及圆环的数量。以下是一个带有 6 个进度环的示例,具有更小的栏宽度、更大的环之间边距和更大的半径
let rings = [
ProgressRing(color: fgColor1, backgroundColor: bgColor1, width: 10),
ProgressRing(color: fgColor2, backgroundColor: bgColor2, width: 10),
ProgressRing(color: fgColor1, backgroundColor: bgColor1, width: 10),
ProgressRing(color: fgColor2, backgroundColor: bgColor2, width: 10),
ProgressRing(color: fgColor1, backgroundColor: bgColor1, width: 10),
ProgressRing(color: fgColor2, backgroundColor: bgColor2, width: 10),
]
let margin: CGFloat = 10
let radius: CGFloat = 120
let progressRingView = ConcentricProgressRingView(center: view.center, radius: radius, margin: margin, rings: rings)
重复的宽度可能会有些繁琐,因此您可以省略它们---但您仍然需要为初始化器提供默认值。如果没有,编译器将警告您存在问题。如果提供的参数无效,初始化器可能会抛出异常,因此您需要处理该异常。
let rings = [
ProgressRing(color: fgColor1, backgroundColor: bgColor1),
ProgressRing(color: fgColor2, backgroundColor: bgColor2),
ProgressRing(color: fgColor1, backgroundColor: bgColor1),
ProgressRing(color: fgColor2, backgroundColor: bgColor2),
ProgressRing(color: fgColor1, backgroundColor: bgColor1),
ProgressRing(color: fgColor2, backgroundColor: bgColor2),
]
let margin: CGFloat = 10
let radius: CGFloat = 120
let width: CGFloat = 8
let progressRingView = try? ConcentricProgressRingView(center: view.center, radius: radius, margin: margin, rings: rings, defaultColor: nil, defaultWidth: width)
环可以有不同的大小、颜色和背景颜色。
let rings = [
ProgressRing(color: UIColor(.RGB(160, 255, 0)), backgroundColor: UIColor(.RGB(44, 66, 4)), width: 40),
ProgressRing(color: UIColor(.RGB(255, 211, 0)), backgroundColor: UIColor(.RGB(85, 78, 0)), width: 20),
ProgressRing(color: UIColor(.RGB(255, 28, 93))),
]
let progressRingView = try! ConcentricProgressRingView(center: view.center, radius: radius, margin: margin, rings: rings, defaultWidth: 30)
要动画化进度更新,请使用 setProgress
。
ring.arcs[1].setProgress(0.5, duration: 2)
您还可以使用下标来访问单个弧。
ring[1].setProgress(0.5, duration: 2)
如果只想更改进度,只需在环上设置进度,它就会立即更改。
ring[1].progress = 0.5
如果您想要同时更新多个环,可以迭代 over ConcentricProgressRingView
,因为它遵循 SequenceType
。
for ring in progressRingView {
ring.progress = 0.5
}
ConcentricProgressRingView 通过 CocoaPods 提供。要安装
它,只需将以下行添加到您的 Podfile 中
pod "ConcentricProgressRingView"
Dan Loewenherz, [email protected]
ConcentricProgressRingView 在 Apache 2.0 许可证下提供。有关更多信息,请参阅 LICENSE 文件。