核心绘图:如何隐藏绘图、轴和标签?

8
我有一个图表,在默认绘图空间中绘制了Y轴和X轴以及主要的绘图,然后我有单独的绘图空间用于辅助绘图,每个绘图空间都有自己的Y轴(所有绘图的X轴相同)。
我正在实现切换辅助绘图打开和关闭的按钮,并希望包括整个绘图空间(绘图、自定义Y轴和自定义Y轴的标签)。似乎没有任何“隐藏”绘图空间的属性,尽管绘图和轴都有“hidden”属性,但将这些属性设置为“YES”会使轴标签可见。
最好的方法是如何完全隐藏绘图空间的内容,而不会造成过多的重绘呢?
我想一种方法可能是完全删除图表的绘图空间和图形,但这感觉不直观。

尝试设置 graph.axisSet = nil; - Vidya Murthy
这将会移除图表中的所有轴,我只想隐藏与辅助绘图相关的轴。我猜一个解决方案是保留所有轴的引用,并重新配置图表的axisSet(省略应该被隐藏的轴),但这感觉像是一个hack :) - Setomidor
是的,这确实是一个解决方法 :) - Vidya Murthy
3个回答

6
您可以在axisSet级别上将所有轴设置为隐藏状态,并且您还可以通过将CPTAxisLabelingPolicyNone指定为轴的标签策略来隐藏标签。这个解决方案对我很有效:
CPTXYAxisSet *axisSet = (CPTXYAxisSet *) self.graphHostingView.hostedGraph.axisSet;
axisSet.hidden = YES;

CPTAxis *y = axisSet.yAxis;
y.labelingPolicy = CPTAxisLabelingPolicyNone;

CPTXYAxis *x = axisSet.xAxis;
x.labelingPolicy = CPTAxisLabelingPolicyNone;

最好在提供答案的代码中添加一些解释。 - O. Jones
谢谢Ollie;我添加了一点解释。 - Dan
当 labelingPolicy 被设置为 .none 时,这将移除网格线。 - Moebius

6

如果你想要隐藏某个轴,请将 hidden 设置为 YES。如果你使用自定义标签(标签策略为 CPTAxisLabelingPolicyNone),请将 axisLabels 设置为 nil。当你需要它们重新出现时,请设置新的标签。对于其他标签策略,请将 labelFormatter 设置为 nil 以隐藏标签,并在需要它们可见时分配有效的格式化程序。


5
您可以将所有标签设置为隐藏。
CPTAxis *axis = someAxis;
hidden = YES;

axis.hidden = hidden;
for (CPTAxisLabel *axisLabel in axis.axisLabels) {
    axisLabel.contentLayer.hidden = hidden;
}

这在最新版本的CorePlot中不起作用。 - Moebius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接