ShinobiCharts - 甜甜圈系列情节区

时间:2016-02-11 11:37:24

标签: ios objective-c charts donut-chart shinobi

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

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

问题在于,当其中一个图表的值较少时,图例会占用较小的垂直空间,从而使甜甜圈看起来比其他图片低。

有没有办法将绘图区域固定在一定的大小?我的目标是让所有的甜甜圈和图例看起来都是一致的,无论每个系列的值是多少。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

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

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

如果您有任何疑问,请不要犹豫与我联系!

亲切的问候, Andrew Polkinghorn。

答案 1 :(得分:0)

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

这是我遵循的步骤:

  1. 在Interface Builder中,对于我的每个图表,我绘制了图表容器UIView,其大小足以仅包含甜甜圈;然后我画了另一个UIView作为图例容器放置在图表容器下面。
  2. 在图表设置中,我根据需要设置图例的样式,并将其设置为隐藏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];
    }
    
  4. MrAPolk的回答并没有真正解决我的问题,但它引发了这个解决方案,所以如果可能,我会给他+1。