RingProgressViewStyle - 一个为 SwiftUI 的 ProgressViewStyle 添加环样式的库

RingProgressViewStyle

RingProgressViewStyle 是一个库,它为 SwiftUI 的 .默认外观基于 的样式,但您可以自定义颜色和描边样式。ProgressViewStyle.linearProgressViewStyle

example.swiftpm 可以在 Swift Playgrounds app 或 Xcode 中打开。

预览

赋予动机

样式已存在于 中,但它只是一个指示器,而不是进度条。所以基本上,你必须自己实现它。.circularProgressViewStyle

幸运的是,如果你用谷歌搜索“SwiftUI进度环”,你可以找到许多代码示例。几乎所有看起来都像:

Circle()
    .trim(from: 0, to: value)
    .stroke(...)
    .rotationEffect(.degrees(-90))

但是,当您尝试通过 指定其大小时,其描边线会溢出其框架。.frame(width: ..., height: ...)

为了防止这种情况,我经常使用代替.strokeBorderstroke

Circle()
    .trim(from: 0, to: value)
    .strokeBorder(...)
    .rotationEffect(.degrees(-90))

但它会发生编译错误,因为返回不符合,但是一种方法。trimsome ShapeInsettableShapestrokeBorderInsettableShape

所以我创建了一个解决方案。

如何使用

将此存储库添加到应用中的包依赖项。

支持的平台

  • iOS 14+
  • iPadOS 14+
  • macOS 11+

GitHub

点击跳转