ShinobiCharts - 甜甜圈系列绘图区
ShinobiCharts - Donut series plot area
在 UIViewController
(想想 iPad
横向布局)中,我显示了 3 个图表(一个并排),每个图表都有一个甜甜圈系列,它们的图例显示在底部中间,外面绘图区,包含图表的视图大小相同。
每个图表最多显示 5 个值,因此当它们具有相同数量的值时,所有甜甜圈和图例看起来都完美对齐。
问题是,当其中一个图表的值较少时,图例采用较小的垂直方向 space,因此使甜甜圈看起来比其他图表低。
有没有办法将绘图区域固定在一定大小?我的目标是让所有的甜甜圈和图例看起来对齐,而不管每个系列的值的数量。
谢谢!
免责声明我是 Shinobi Controls 的开发人员。
如果您为图例提供框架,图表将不会调整其大小 canvas 以适应图表框架内的图例和 canvas。
这意味着您可以将图例放置在您想要的位置,并且图表不会根据图例的大小调整它的大小 canvas。
这可能意味着您需要为图表提供较小的初始框架,以便您可以将图例放入图表旁边。
如果您有任何问题,请随时与我们联系!
亲切的问候,
安德鲁·波尔金霍恩。
从 MrAPolk 的回答开始,我设法解决了我的问题。
这些是我遵循的步骤:
- 在 Interface Builder 中,对于我的每个图表,我都绘制了图表容器
UIView
,其大小足以仅包含甜甜圈;然后我画了另一个 UIView
作为图例容器,放在图表容器下面。
- 在图表设置中,我根据需要设置图例样式并将其设置为 hidden (
chart.legend.hidden = YES;
).
我实现了 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。
在 UIViewController
(想想 iPad
横向布局)中,我显示了 3 个图表(一个并排),每个图表都有一个甜甜圈系列,它们的图例显示在底部中间,外面绘图区,包含图表的视图大小相同。
每个图表最多显示 5 个值,因此当它们具有相同数量的值时,所有甜甜圈和图例看起来都完美对齐。
问题是,当其中一个图表的值较少时,图例采用较小的垂直方向 space,因此使甜甜圈看起来比其他图表低。
有没有办法将绘图区域固定在一定大小?我的目标是让所有的甜甜圈和图例看起来对齐,而不管每个系列的值的数量。
谢谢!
免责声明我是 Shinobi Controls 的开发人员。
如果您为图例提供框架,图表将不会调整其大小 canvas 以适应图表框架内的图例和 canvas。
这意味着您可以将图例放置在您想要的位置,并且图表不会根据图例的大小调整它的大小 canvas。
这可能意味着您需要为图表提供较小的初始框架,以便您可以将图例放入图表旁边。
如果您有任何问题,请随时与我们联系!
亲切的问候, 安德鲁·波尔金霍恩。
从 MrAPolk 的回答开始,我设法解决了我的问题。
这些是我遵循的步骤:
- 在 Interface Builder 中,对于我的每个图表,我都绘制了图表容器
UIView
,其大小足以仅包含甜甜圈;然后我画了另一个UIView
作为图例容器,放在图表容器下面。 - 在图表设置中,我根据需要设置图例样式并将其设置为 hidden (
chart.legend.hidden = YES;
). 我实现了
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。