ConcentricProgressRingView 2.0.1

ConcentricProgressRingView 2.0.1

测试已测试
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"

待办事项

  • Swift 3
  • 文档
  • 测试

作者

Dan Loewenherz, [email protected]

许可证

ConcentricProgressRingView 在 Apache 2.0 许可证下提供。有关更多信息,请参阅 LICENSE 文件。