You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI实现watchOS风格linear gauge线性仪表盘的优化求助

更新

我已经实现了更接近预期效果的linear gauge,但仍需优化。我尝试使用圆角矩形作为遮罩,但效果不佳,非常欢迎大家提供改进建议。

当前实现效果

GeometryReader { geometry in
    RoundedRectangle(cornerRadius: 7.5, style: .circular)
        .fill(LinearGradient(gradient: Gradient(colors: [Color.green, Color.yellow, Color.orange, Color.red, Color.purple]), startPoint: .bottom, endPoint: .top))
        .frame(width: geometry.size.width, height: geometry.size.height, alignment: .bottomLeading)
        .overlay(Color.black.opacity(0.35).cornerRadius(7.5))
    RoundedRectangle(cornerRadius: 7.5, style: .circular)
        .fill(LinearGradient(gradient: Gradient(colors: [Color.green, Color.yellow, Color.orange, Color.red, Color.purple]), startPoint: .bottom, endPoint: .top)
        .frame(width: geometry.size.width, height: geometry.size.height, alignment: .bottomLeading)
        .mask(
            VStack {
                Spacer()
                Rectangle()
                    // 可根据需求调整数值1
                    .frame(width: geometry.size.width, height:geometry.size.height * (CGFloat(1) / CGFloat(11)), alignment: .bottom)
            })
}
.frame(width: 15, height: .infinity)
.padding(.all, 10)
原问题

我尝试实现类似watchOS中的linear gauge线性仪表盘,当前遇到的难点是不知道如何正确叠加当前值指示器。预期实现效果和我目前的实现效果分别见下图,想请教更优的实现方案。

预期效果

预期实现效果

当前个人实现效果(不佳)

个人实现效果

ZStack {
    LinearGradient(gradient: Gradient(colors: [Color.green, Color.yellow, Color.orange, Color.red, Color.purple]), startPoint: .bottom, endPoint: .top)
    GeometryReader { metrics in
        Circle()
            .stroke(Color.white,lineWidth: 2)
            .frame(minHeight: 0, maxHeight: metrics.size.height)
            .foregroundColor(Color.clear)
            .position(x: metrics.size.width / 2 ,y: metrics.size.height * (CGFloat(10) / CGFloat(11)))
    }
}
.cornerRadius(7.5)
.frame(minWidth: 0, maxWidth: 15)

内容的提问来源于stack exchange,提问作者cole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 12:51:03