SwiftUI 4.0(iOS 16+)使用新的 Gauge 视图极简实现仪表盘外观
Posted 大熊猫侯佩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI 4.0(iOS 16+)使用新的 Gauge 视图极简实现仪表盘外观相关的知识,希望对你有一定的参考价值。
概览
在 SwiftUI 4.0 里实现一个仪表盘视图有多难呢?
利用 SwiftUI 4.0 中新加入的 Gauge 视图,我们可以分分钟超 easy 的实现一个上图那样的仪表盘。
废话少叙!
Let’s do it!!! 😉
SwiftUI 4.0 新的 Gauge 视图
从 SwiftUI 4.0 开始,Apple 新增了 Gauge 视图:
我们可以使用它轻松表示仪表盘外观样式的进度值,它和 ProgressView 有点类似,不过它的内置样式可比 ProgressView 多得多:
大家有兴趣的话可以逐一尝试看看这些样式有什么不同。
定制 Gauge 样式
为了绘制我们心仪的仪表盘样式,我们可以使用自定义 GaugeStyle,然后将其应用在任意 Gauge 视图上。
与其它 SwiftUI 视图定制样式类似,我们需要创建新的遵守 GaugeStyle 协议的结构:
struct PowerGaugeStyle: GaugeStyle
private var purpleGradient = LinearGradient(gradient: Gradient(colors: [ Color(red: 207/255, green: 150/255, blue: 207/255), Color(red: 107/255, green: 116/255, blue: 179/255) ]), startPoint: .trailing, endPoint: .leading)
func makeBody(configuration: Configuration) -> some View
ZStack
Circle()
.foregroundColor(Color(.systemGray6))
Circle()
.trim(from: 0, to: 0.75 * configuration.value)
.stroke(purpleGradient, style: StrokeStyle(lineWidth: 30, lineCap: .butt))
.rotationEffect(.degrees(135))
.shadow(radius: 5.0)
Circle()
.trim(from: 0, to: 0.75)
.stroke(Color.black, style: StrokeStyle(lineWidth: 10, lineCap: .butt, lineJoin: .round, dash: [1, 34], dashPhase: 0.0))
.rotationEffect(.degrees(135))
VStack
configuration.currentValueLabel
.font(.system(size: 60, weight: .bold, design: .rounded))
.foregroundColor(.gray)
.padding()
Text("赛亚人战斗力 / 单位:亿")
.font(.system(.body, design: .rounded))
.bold()
.foregroundColor(.gray)
如上所示,我们创建了新的 PowerGaugeStyle 样式,不过出于演示目的,并没有提供太多的定制属性,很多值都是固定的。
在实际代码中我们可以让用户对样式有更多的选择,比如提供圆环颜色、标签文本、文本大小、圆环宽度等众多属性。
我们可以这样使用 PowerGaugeStyle 样式:
@State private var power = 0.0
Gauge(value: power, in: 0...100_00.0)
Image(systemName: "gauge.medium")
.font(.system(size: 50.0))
currentValueLabel:
Text("\\(String(format: "%0.1f", power))")
.gaugeStyle(PowerGaugeStyle())
现在,看一下我们定制过后的战斗力仪表盘吧:
战斗力都爆表了!是不是很赞呢?棒棒哒💯!!!
总结
在本篇博文中,我们介绍了在 SwiftUI 4.0 中如何使用新的 Gauge 视图创建极具个性的仪表盘外观,相信小伙伴们会喜欢 😎
感谢观赏,再会!
以上是关于SwiftUI 4.0(iOS 16+)使用新的 Gauge 视图极简实现仪表盘外观的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 4.0 (iOS 16) 新ViewThatFits视图使用简介
SwiftUI 4.0 (iOS 16) 新ViewThatFits视图使用简介
iOS 16 中 SwiftUI 4.0 Toolbar 自定义背景色以及 List 自动编辑操作的原生支持
iOS 16 中 SwiftUI 4.0 Toolbar 自定义背景色以及 List 自动编辑操作的原生支持