ShinobiCharts - 甜甜圈系列绘图区

ShinobiCharts - Donut series plot area

UIViewController(想想 iPad 横向布局)中,我显示了 3 个图表(一个并排),每个图表都有一个甜甜圈系列,它们的图例显示在底部中间,外面绘图区,包含图表的视图大小相同。

每个图表最多显示 5 个值,因此当它们具有相同数量的值时,所有甜甜圈和图例看起来都完美对齐。

问题是,当其中一个图表的值较少时,图例采用较小的垂直方向 space,因此使甜甜圈看起来比其他图表低。

有没有办法将绘图区域固定在一定大小?我的目标是让所有的甜甜圈和图例看起来对齐,而不管每个系列的值的数量。

谢谢!

免责声明我是 Shinobi Controls 的开发人员。

如果您为图例提供框架,图表将不会调整其大小 canvas 以适应图表框架内的图例和 canvas。

这意味着您可以将图例放置在您想要的位置,并且图表不会根据图例的大小调整它的大小 canvas。

这可能意味着您需要为图表提供较小的初始框架,以便您可以将图例放入图表旁边。

如果您有任何问题,请随时与我们联系!

亲切的问候, 安德鲁·波尔金霍恩。

从 MrAPolk 的回答开始,我设法解决了我的问题。

这些是我遵循的步骤:

  1. 在 Interface Builder 中,对于我的每个图表,我都绘制了图表容器 UIView,其大小足以仅包含甜甜圈;然后我画了另一个 UIView 作为图例容器,放在图表容器下面。
  2. 在图表设置中,我根据需要设置图例样式并将其设置为 hidden (chart.legend.hidden = YES;).
  3. 我实现了 SChartDelegate 方法 sChartRenderFinished: 来做这样的事情:

    - (void)sChartRenderFinished:(ShinobiChart *)chart {
        SChartLegend *legend = chart.legend;
        [legend removeFromSuperview];
        legend.hidden = NO;
        legend.frame = legendContainer.bounds; //legendContainer is the UIView defined in IB
        [legendContainer addSubview:legend];
        [legend setNeedsDisplay];
    }
    

MrAPolk 的回答实际上并没有解决我的问题,但它激发了这个解决方案,所以如果可以的话我会给他+1。