如何在代码中选择列系列栏并确保其可见

时间:2016-07-03 02:36:19

标签: objective-c shinobi

这个问题是上一个问题的延续:

How to select a Column series Bar in code

在该问题中,已经确定,为了在代码中选择一个条,您需要使用委托并在当前点上选择设置为YES。然后你需要致电-reloadData& -redrawChart哪个工作正常。

现在,如果你有足够大的数据集,我需要设置默认范围,以确保每个条形不是太窄,并显示还有更多,所以最后一个条显示了一半。

SChartRange *range = [[SChartNumberRange alloc] initWithMinimum:@(-0.5) andMaximum:@(8)];
[self.chartView.xAxis setDefaultRange:range];

值有点奇怪但如果min为0则第一个条仅显示一半。但这给出了9.5的范围,看起来似乎没问题。我实际上根据图表视图的宽度和每个条形图的大小来解决这个问题 - 大约40个点似乎有效。

无论如何,既然我能够选择下一个点(在代码中),我现在可能还需要滚动图表以确保所选的栏可见。如果当前可见,我还需要不滚动。

请记住,因为我正在呼叫-reloadData& -redrawChart我不能只更新图表的范围,似乎我必须设置默认范围。

我已经尝试获取当前范围,检查下一个选定的条形索引是否在此范围内并计算新范围但在所有情况下这对我都不起作用 - 这实际上很奇怪这里发生的事情......例如最后一点我必须设置它,所以范围是7.5而不是像其他人一样......

有推荐的方法吗?我希望在图表上使用类似滚动索引的可见方法,但无法找到任何方法。

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容实现此目的:

chart.xAxis?.setRange(SChartRange(minimum: 50, andMaximum: 70), withAnimation: false)
chart.redrawChartIncludePlotArea(true)

这将设置当前范围而不影响defaultRange,并且调用redraw将为您直观地更新它。

如果您需要任何进一步的帮助,我建议您在ShinobiControls开发者支持论坛上发帖,因为响应速度会更快。

亲切的问候,

马特