使用 CorePlot CPTAxisLabelingPolicyAutomatic 设置显示最大 y 轴
Showing max y-axis with CorePlot CPTAxisLabelingPolicyAutomatic setting
我想绘制一个图形,其中最大 y 轴值标签显示在带有 CPTAxisLabelingPolicyAutomatic 设置的标签刻度上。但是我还没有找到任何 public 函数允许我这样做。
检查 CorePlot 源代码(autoGenerateMajorTickLocations 方法)后,我想我可以通过使用 CPTDecimalDivide 和 CPTNiceNum 来解决一些问题。我通过使用计算的 "nice number" 间隔
在 Y 轴上增加我的 plotRange 来实现我的代码
var majorInterval = CPTDecimalDivide( Decimal(yAxisLength),
CPTDecimalFromUnsignedInteger(5-1))
majorInterval = CPTNiceNum(majorInterval)
let interval = Int(truncating: majorInterval as NSNumber)
let number = Int(yAxisLength/interval) + 1
yAxisLength = Int(Double(number * interval))
但是 CPTNiceNum 不是 public 方法,所以我想知道有没有更好的方法来做到这一点?
在图表上调用 -layoutIfNeeded
以确保轴标签已更新,然后从 y 轴读取 majorTickLocations
集。您可以轻松找到集合中的最大位置值。
我想绘制一个图形,其中最大 y 轴值标签显示在带有 CPTAxisLabelingPolicyAutomatic 设置的标签刻度上。但是我还没有找到任何 public 函数允许我这样做。
检查 CorePlot 源代码(autoGenerateMajorTickLocations 方法)后,我想我可以通过使用 CPTDecimalDivide 和 CPTNiceNum 来解决一些问题。我通过使用计算的 "nice number" 间隔
在 Y 轴上增加我的 plotRange 来实现我的代码var majorInterval = CPTDecimalDivide( Decimal(yAxisLength),
CPTDecimalFromUnsignedInteger(5-1))
majorInterval = CPTNiceNum(majorInterval)
let interval = Int(truncating: majorInterval as NSNumber)
let number = Int(yAxisLength/interval) + 1
yAxisLength = Int(Double(number * interval))
但是 CPTNiceNum 不是 public 方法,所以我想知道有没有更好的方法来做到这一点?
在图表上调用 -layoutIfNeeded
以确保轴标签已更新,然后从 y 轴读取 majorTickLocations
集。您可以轻松找到集合中的最大位置值。