GaugeKit

GaugeKit 是一个免费使用的轻量级 Swift 包,它可以轻松创建类似仪表盘的视图,非常适合可视化仪表盘中的值,与 Apple 在某些 Apple Watch complications 中使用的原生仪表盘非常相似。

导入 GaugeKit

要在您的项目中使用 GaugeKit,只需使用此仓库的 URL 将 Swift Package 添加到您的项目,或者手动将其添加到您的 Package.swift 清单中。

let package = Package(
  ...
  dependencies: [
    .package(url: "https://github.com/antonmartinsson/gaugekit.git", from: "1.3.0")
  ],
  ...
)

要求

GaugeKit 使用 SwiftUI 构建,使用最新版本的最低要求是您的项目(或您使用它创建的视图)的部署目标设置为 iOS 13 / macOS 11 / watchOS 6 或更高版本。

要在 UIKit 项目中使用它,请使用 UIHostingController
要在 AppKit 项目中使用它,请使用 NSHostingControllerNSHostingView

用法

创建一个基本的 Gauge 非常简单,只需提供一个标题、一个整数值以及您希望仪表盘沿自身显示的颜色。 例如

GaugeView(title: "Speed", value: 88, colors: [.red, .orange, .yellow, .green])

Gauge Gauge

像这样的基本仪表盘的默认最大值为 100。您也可以显式地将仪表盘的最大值设置为自定义值。 以下初始化将创建一个最大值为 1000 而不是 100 的仪表盘。

GaugeView(title: "Speed", value: 100, maxValue: 1000, colors: [.red, .orange, .yellow, .green])

此外,如果您觉得不需要任何内置的文本元素,您可以创建一个没有标题或值(或任何其他信息)的仪表盘,就像这样

GaugeView(colors: [.red, .orange, .yellow, .green])

修饰符

如果您需要自定义 Gauge 中的某些元素,可以使用一些视图修饰符来帮助您完成。

指示器颜色

要控制仪表盘指示器的颜色,请使用以下修饰符。 默认情况下,指示器是仪表的切口,但设置特定颜色会将其分层在仪表上方。

.gaugeIndicatorColor(.blue)

阴影

要向仪表盘仪表添加阴影(不包括仪表盘内的文本),请使用以下修饰符。

.gaugeMeterShadow(color: .black.opacity(0.2), radius: 5)

最后,由于仪表盘内的额外信息空间非常有限,您可以使用三个不同的(可选)字符串来初始化仪表盘,其中包含一些额外信息。 当记录到对仪表盘视图的点击时,这些信息将通过快速翻转动画向用户显示。

let strap = "This is a semi-clever reference."
let title = "#BTTF"
let body = "This is how fast you need to go to trigger the flux capacitor."
let additionalInfo = GaugeAdditionalInfo(strap: strap, title: title, body: body)

GaugeView(title: "Speed", value: 88, colors: [.red, .orange, .yellow, .green], additionalInfo: additionalInfo)

如果您将任何字符串保留为 nil,则负责显示该字符串的 Text 实例将不会呈现。 因此,如果您只想创建一个带有简短描述且没有辅助标题或正文的仪表盘,这也是一个有效的初始化

let strap = "This is a semi-clever reference."
let additionalInfo = GaugeAdditionalInfo(strap: strap, title: nil, body: nil)

GaugeView(title: "Speed", value: 88, colors: [.red, .orange, .yellow, .green], additionalInfo: additionalInfo)

您可以使用以下修饰符来控制此背面视图的色调。

.gaugeBackTint(.yellow)

路线图

虽然我目前对 GaugeKit 没有很多具体的计划,但我计划不时地摆弄它并尽我所能地改进它。 如果您有任何功能请求或您认为我应该考虑的想法,请随时通过 Twitter 与我联系。

使用 GaugeKit 的应用

Cryptoverview, by yours truly!

MecaTest, by Jean-François Denniel.

Conal, by @ConalApp.

在您的项目中使用 GaugeKit?

您是否在您的某个项目中使用 GuageKit? 请在 Twitter 上给我留言并告诉我相关信息,我会将其添加到上面的列表中!