如何将SwiftUI Chart中的RuleMark置于BarMark下方?
解决柱形图平均线置于柱体后方的问题
在SwiftUI Chart中,标记的绘制层级由代码添加顺序决定:先添加的标记会被后添加的标记覆盖。你当前代码先添加BarMark再添加RuleMark,导致平均线显示在柱体上方。
只需调整两者顺序,把RuleMark放在BarMark之前,就能让平均线处于柱体后方:
struct ContentView: View { var body: some View { debugChartAvgLine } var debugChartAvgLine: some View { let salesData: [(String, Int)] = [ ("Jan", 100), ("Feb", 150), ("Mar", 100), ("Apr", 50), ("May", 70), ("June", 140) ] let avg = salesData.map{$0.1}.reduce(0, +) / salesData.count return Chart { // 先添加平均线,使其处于底层 RuleMark(y: .value("avg sale", avg)) .lineStyle(StrokeStyle(lineWidth: 1, dash: [5])) .foregroundStyle(.red) // 后添加柱体,覆盖在平均线之上 ForEach(salesData, id: \.0) { month, sales in BarMark( x: .value("Month", month), y: .value("Amount", sales) ) } } .frame(height: 300) } }
修改后,红色虚线平均线会被蓝色柱体遮挡,仅显示柱体间隙部分,实现置于柱体后方的效果。
内容的提问来源于stack exchange,提问作者Huy Vu
相关产品推荐
相关产品推荐

