1

我有一个 ColumnSeries 图表,我想将其表示majorTickLabel为好像悬停在上方,majorGridLine但我没有看到一种直接的方法来控制标签绘制的位置超出我目前拥有的位置,从而实现插入标签,使其“悬停”在图形。

API 中是否缺少此功能?如果是这样,关于在哪里查看以实现这一目标的任何建议?

下面是我当前的 y 轴实现

let yAxis = SChartNumberAxis()
yAxis.style.majorGridLineStyle.showMajorGridLines = true
yAxis.rangePaddingHigh = 500
yAxis.discontinuousTickLabelClipping = SChartDiscontinuousTickLabelClippingHigh
yAxis.axisPosition = SChartAxisPositionReverse
yAxis.style.majorTickStyle.tickGap = -45
goalChart.yAxis = yAxis

更新 - 答案如下

谢谢 Sammy,只需抵消 tickLabel 即可解决我的问题。以下是使用的解决方案的副本。

@objc func sChart(chart: ShinobiChart!, alterTickMark tickMark: SChartTickMark!, beforeAddingToAxis axis: SChartAxis!) {
        if !axis.isXAxis() {
            if let label = tickMark.tickLabel {
                label.frame.offset(dx: 0, dy: -8)
            }
        }
}
4

1 回答 1

1

tickGapon 属性使SChartTickStyle您可以控制刻度线标签相对于刻度线本身的位置。似乎您已经发现了这一点,并且它没有提供您需要的功能。

对于更细粒度的控制,您应该查看实现SChartDelegate协议,特别是以下方法:

- (void)sChart:(ShinobiChart *)chart alterTickMark:(SChartTickMark *)tickMark
                                beforeAddingToAxis:(SChartAxis *)axis

这使您有机会在将刻度线添加到轴之前更改刻度线。tickLabel您可以通过该属性获取标签。有关此方法调用期间可用的其他属性的更多详细信息,请查看SChartTickMark.

山姆

于 2015-02-27T23:15:09.527 回答