【问题标题】:Core plot: How to hide the plot, axis and labels?核心情节:如何隐藏情节、轴和标签?
【发布时间】:2012-06-27 11:56:17
【问题描述】:

我有一个带有 Y 轴和 X 轴的图形,在默认绘图空间以及主绘图上绘制,然后我为辅助绘图有单独的绘图空间,每个绘图空间都有自己的 Y 轴(X 轴对于所有地块)。

我正在实现打开和关闭辅助绘图的按钮,我希望它基本上包括整个绘图空间(绘图、自定义 y 轴和自定义 y 轴的标签)。绘图空间似乎没有任何“隐藏”属性,而且绘图和轴都具有“隐藏”属性,将这些设置为“是”会使轴标签可见。

  • 什么是完全隐藏绘图空间内容而不导致不必要的重绘的最佳方法?

我想一种方法可能是从图中完全删除绘图空间并绘图,但这感觉不直观。

【问题讨论】:

  • 尝试设置graph.axisSet = nil;
  • 这将删除图中的所有轴,我只想隐藏与辅助图关联的轴/轴。我想一种解决方案是保留对所有轴的引用并按照您的建议重新配置图形的axisSet(省略应该隐藏的轴),但感觉就像一个hack :)
  • 是的,这确实是一种解决方法:)

标签: ios core-plot


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以在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;
    

    【讨论】:

    • 最好在您提供的代码中添加一些解释以供回答。
    • 谢谢奥利;我加了一点解释。
    • 这会在 labelingPolicy 设置为 .none 时删除网格线
    【解决方案3】:

    您也可以将所有标签设置为隐藏

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

    【讨论】:

    • 这在最新版本的 CorePlot 中不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多