这是我之前提出的问题的后续问题:
在那里的答案中,根据我提供的示例数据,刻度的步幅是硬编码的:
AxisMarks(position: .bottom, values: .stride(by: 100)) {
AxisValueLabel(anchor: .top)
}
但数据是可变的,有时步幅只需要是 10,或者任何其他数字。
所以我从一个局部变量开始:
var xStride = 100
,这给了我以下错误:
无法将“Int”类型的值转换为预期的参数类型“Calendar.Component”
然后我尝试转换变量:
var xStride = Calendar.Component(100)
,现在错误是:
无法构造“Calendar.Component”,因为它没有可访问的初始化程序
我还不明白的是,我的图表只是一个 xy 图,并不涉及天数或年份或其他任何内容。
那么,我可以这样做吗?该怎么做?
你可以尝试声明
并使用它
有一个特定的步幅,它使用
BinaryFloatingPoint
。 也可以与 配合使用Double
,但不能Int
。当您使用时
.stride(by: xStride)
,Swift 会自动尝试使用此 步幅版本,因为另一个版本不采用。xStride
Int
Calendar.Component
Int
当您声明时,
@State private var xStride: Float = 100
Swift 会使用适当版本的stride和BinaryFloatingPoint
类型。同样,当您使用时,.stride(by: 100)
Swift 会100
自动将转换为 Float 或 Double。