ALProgressRing
关于
ALProgressRing - 是一个用于显示圆形进度环的库。
它易于定制。您可以调整环形渐变、线宽、阴影等。
此外,为这个库我添加了大约20个动画功能,更多细节在 动画 部分
如果您喜欢这个库,请别忘了给它打一个 ★ 星号
,这会帮助我在其开发中。
导航
需求
- iOS 10.0 +
- Swift 4.2 +
安装
Swift 包管理器
Swift 包管理器(Swift Package Manager)是一个用于管理 Swift 代码分发的工具。它与 Swift 构建系统集成,以自动化下载、编译和链接依赖的过程。
要集成 ALProgressRing,请点击 文件 -> Swift 包 -> 添加包依赖
并输入
https://github.com/alxrguz/ALProgressRing
CocoaPods
ALProgressRing 通过 CocoaPods 可用。要安装它,请简单地将以下行添加到 Podfile 文件中
pod 'ALProgressRing'
手动
如果你不喜欢使用上述任一依赖管理器,可以手动将 ALProgressRing 集成到项目中。将 Source/ALProgressRing
文件夹放入你的 Xcode 项目中。
使用
快速入门
import ALProgressRing
class MyViewController: UIViewController {
private lazy var progressRing = ALProgressRing()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(progressRing)
// Setup layout
progressRing.translatesAutoresizingMaskIntoConstraints = false
progressRing.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
progressRing.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
// Make sure to set the view size
progressRing.widthAnchor.constraint(equalToConstant: 180).isActive = true
progressRing.heightAnchor.constraint(equalToConstant: 180).isActive = true
progressRing.setProgress(0.8, animated: true)
}
}
自定义
颜色
您可以根据状态自定义按钮、标题和指示器的颜色。
/// Set track color
/// If you don't need a gradient, just set the same values for `startColor` and `endColor`
progressRing.startColor = .systemPink
progressRing.endColor = .systemRed
/// Set groove color
progressRing.endColor = .systemRed
布局
progressRing.startAngle = -.pi / 2 // The start angle of the ring to begin drawing.
progressRing.endAngle = 1.5 * .pi // The end angle of the ring to end drawing.
progressRing.startGradientPoint = .init(x: 0.5, y: 0) // The starting poin of the gradient
progressRing.endGradientPoint = .init(x: 0.5, y: 1) // The ending position of the gradient.
// Sets the line width for progress ring and "groove" ring
progressRing.lineWidth = 10
// Or, if you need to separate these parameters, use
progressRing.ringWidth = 10
progressRing.grooveWidth = 8
动画
progressRing.duration = 2 // Duration of the ring's fill animation.
progressRing.timingFunction = .easeOutExpo // Timing function of the ring's fill animation.
/// The following use of setProgress (_ value: Int, animated: Bool)
/// will take into account the new parameters
progressRing.setProgress(0.8, animated: true)
让我们看看timingFunction
参数,它是一种ALTimingFunction
类型,包括以下类型的动画
这里有一个很好的快速参考表:在这里.
许可协议
ALProgressRing 采用MIT许可协议。有关更多信息,请参阅LICENSE文件。