关于ios:ShinobiCharts-甜甜圈系列剧情

ShinobiCharts - Donut series plot area

UIViewController(以iPad横向布局为例)中,我正在显示3个图表(一个在另一个旁边),每个图表都带有一个甜甜圈系列,并且它们的图例显示在底部区域的中部,绘图区域的外部,视图包含图表的大小相同。

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

问题在于,当其中一个图表的值较少时,图例会占用较小的垂直空间,因此使甜甜圈显得比其他图表要小。

是否可以将绘图区域固定为特定大小?我的目标是使所有的甜甜圈和图例看起来对齐,而与每个系列的值数量无关。

谢谢!


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

如果为图例提供框架,则图表将不会调整其画布的大小,以适合图例框架内的图例和画布。

这意味着您可以将图例放置在所需的位置,并且图表不会根据图例的大小调整其画布的大小。

这可能意味着您需要给图表一个较小的初始框架,以便您可以在图表旁边放置图例。

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

亲切的问候,
安德鲁·波金霍恩(Andrew Polkinghorn)。


从MrAPolk的答案开始,我设法实现了针对我的问题的解决方案。

这些是我遵循的步骤:

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

    1
    2
    3
    4
    5
    6
    7
    8
    - (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。