UICircularProgressRing
UICircularProgress 环是一个用于渲染圆形进度环和计时器的库。
- 声明式:使用 SwiftUI (可选:已提供旧版 UIKit 版本),UICircularProgressRing 是声明式的,使其易于阅读和使用。
- 可定制:旨在用于生产环境,所有视图都高度可定制,而不会失去易用性。这允许开发者量身定制外观、感觉和功能以符合需求。
- 已测试:已在许多 生产应用程序 中进行了实战测试。UICircularProgressRing 也进行了全面的单元测试和快照测试,因此开发者可以放心使用。
- 文档化:UICircularProgressRing 的公共 API 已达到 100% 文档化,这是在使用任何代码之前强制执行的。这是一份资源,可帮助新用户了解如何充分利用这个库。
iOS 14+ 注意事项
由于苹果公司已经添加了内置的 ProgressView,此库的需求即将结束。我的建议:如果您支持 iOS 14.0 并使用新的系统 ProgressView
,则应使用该功能。此库将继续维护(修复关键错误等),但我们没有计划添加新功能,因为我们正在接近此库的生命周期结束。
安装
UICircularProgressRing 可用于两个主要版本:最新版本 v7.0+ 或旧版。旧版使用 UIKit 编写,需要部署目标 iOS 8.0+
或 tvOS 10.0+
。最新版本使用 SwiftUI 编写,需要 iOS 13.0+
、macOS 15.0+
、tvOS 13.0+
或 WatchOS 2.0+
。
对于旧版安装,请按照这些说明操作。
Swift 包管理器
只需将此库添加到您的包规范或按照此处添加包依赖项的说明操作。
.package(
url: "https://github.com/luispadron/UICircularProgressRing.git",
.branch("master")
)
文档
此项目的公共 API 已 100% 文档化,这是我们花费很多时间工作的结果。请在提出任何问题、疑问等之前务必阅读文档。
用法
ProgressRing
ProgressRing
是一个视图,用于显示某些类型的进度,可以是表示为 [0, ∞)
范围内百分比的任何内容。百分比以十进制格式表示,即 0.5
表示 50%
。进度可以是一个下载操作,用户测试分数的百分比等级等。以下是一个使用 ProgressRing
的简短示例,更多详情请阅读文档或尝试示例应用。
struct ProgressRingExample: View {
@State var progress = RingProgress.percent(0.44)
var body: some View {
VStack {
ProgressRing(
progress: $progress,
axis: .top,
clockwise: true,
outerRingStyle: .init(
color: .color(.gray),
strokeStyle: .init(lineWidth: 20)
),
innerRingStyle: .init(
color: .color(.green),
strokeStyle: .init(lineWidth: 10),
padding: 5
)
)
.animation(.easeInOut(duration: 5))
.padding(32)
}
}
}
计时器环形图
计时器环形图
是一个用于显示时间的视图。您可以通过提供一个时间单位和持续时间来初始化计时器,例如: .seconds(60)
。这意味着 计时器环形图
将运行 60 秒,填充内部环,直到最终达到整个外部环的 100%。下面是一个使用 计时器环形图
的简单例子,更多详情请阅读文档或试用示例应用程序。
struct TimerRingExample: View {
@State var isPaused = false
@State var isDone = false
var body: some View {
TimerRing(
time: .minutes(1),
delay: .seconds(0.5),
innerRingStyle: .init(
color: .color(.green),
strokeStyle: .init(lineWidth: 16),
padding: 8
),
isPaused: $isTimerPaused,
isDone: $isTimerDone
) { currentTime in
Text(timeFormatter.string(from: currentTime))
.font(.title)
.bold()
}
}
}
示例
使用 UICircularProgressRing 的应用程序
- GradePoint by Luis Padron.
- UVI Mate by Alexander Ershov.
- HotelTonight by Hotel Tonight Inc.
- הנתיב המהיר by Elad Hayun
- Nyx Nightclub Management by Nyx Systems IVS
- Barstool Sports by Barstool Sports
- 88 Days by Stijn Kramer
- Bookbot by Bookbot
- car2go by car2go Group GmbH