GaugeKit 是一个免费使用的轻量级 Swift 包,它可以轻松创建类似仪表盘的视图,非常适合可视化仪表盘中的值,与 Apple 在某些 Apple Watch complications 中使用的原生仪表盘非常相似。
要在您的项目中使用 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 项目中使用它,请使用 NSHostingController 或 NSHostingView。
创建一个基本的 Gauge 非常简单,只需提供一个标题、一个整数值以及您希望仪表盘沿自身显示的颜色。 例如
GaugeView(title: "Speed", value: 88, colors: [.red, .orange, .yellow, .green])
像这样的基本仪表盘的默认最大值为 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 与我联系。
Cryptoverview, by yours truly!
MecaTest, by Jean-François Denniel.
您是否在您的某个项目中使用 GuageKit? 请在 Twitter 上给我留言并告诉我相关信息,我会将其添加到上面的列表中!