提问人:Ismet Sahin 提问时间:10/27/2023 最后编辑:Ismet Sahin 更新时间:10/27/2023 访问量:51
具有自定义符号形状的 Swift 图表
Swift Charts with Custom Symbol Shapes
问:
以下代码尝试使用不同的符号显示两个点。第一个具有自定义形状。该代码导致错误 No exact matches in reference to static method 'buildExpression'。将 .symbol(point.symb) 替换为 .symbol(CustomTriangle()) 会显示带有自定义符号的两个点,表明 CustomTriangle 结构没问题。
图表框架中有两个 .symbol 修饰符,返回 ChartContent(而不是 View)的修饰符对于链接其他图表内容修饰符至关重要。有没有办法用自定义三角形显示第一个点,而用方形符号显示下一个点?
代码如下:
import SwiftUI
import Charts
struct Point: Identifiable {
public let id = UUID()
let x: Double
let y: Double
let symb: any ChartSymbolShape
}
public struct CustomTriangle: ChartSymbolShape {
public var perceptualUnitRect = CGRect(x: 0, y: 0, width: 1, height: 1)
public func path(in rect: CGRect) -> Path {
var path = Path()
path.move(to: CGPoint(x: rect.midX, y: rect.minY))
path.addLine(to: CGPoint(x: rect.minX, y: rect.maxY))
path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
path.closeSubpath()
return path
}
}
struct MyPlot: View {
let points = [Point(x: 0, y: 0.5, symb: CustomTriangle()),
Point(x: 1, y: 1.0, symb: .square)]
var body: some View {
Chart {
ForEach(points, id: \.id) {point in
PointMark(x: .value("xaxis", point.x),
y: .value("yaxis", point.y))
.symbol(point.symb) // this works --> .symbol(CustomTriangle())
}
}
.padding()
}
}
struct ContentView: View {
var body: some View {
MyPlot()
.padding()
}
}
答: 暂无答案
评论