我有名称与年龄的关系图,其中名称位于x轴上,值位于Y轴上。 问题是名称在x轴上重叠,看起来不太好。Shinobi图表中的X轴标签格式化
,因为我们放大我找不到表示第x轴截断名称值和任何格式完整。
有什么办法,以显示与椭圆或其他格式的其中姓名将不会重叠的名字呢?
我有名称与年龄的关系图,其中名称位于x轴上,值位于Y轴上。 问题是名称在x轴上重叠,看起来不太好。Shinobi图表中的X轴标签格式化
,因为我们放大我找不到表示第x轴截断名称值和任何格式完整。
有什么办法,以显示与椭圆或其他格式的其中姓名将不会重叠的名字呢?
的alterTickMark:
方法上SChartDelegate
允许修改一个tickMark
(和其相应的tickLabel
)它们被添加到轴上之前。
您可以在此步骤中检查axisRange
,并确定range.span
是否足够小,以至于您可以显示标签被截断或已满。
E.g.
-(void)sChart:(ShinobiChart *)chart alterTickMark:(SChartTickMark *)tickMark beforeAddingToAxis:(SChartAxis *)axis
{
if (!axis.isXAxis)
return;
if ([axis.axisRange.span doubleValue] > 5)
{
NSString *shortText = [tickMark.tickLabel.text substringToIndex:3];
tickMark.tickLabel.text = [NSString stringWithFormat:@"%@...", shortText];
//Resize, but maintain centering
CGPoint center = tickMark.tickLabel.center;
[tickMark.tickLabel sizeToFit];
tickMark.tickLabel.center = center;
}
}
作为完整的披露,我为ShinobiControls工作。
如果您需要调整列系列和缩放刻度标签宽度被启用(这使得缩放手势后标签更多的空间),只是实现SChart委托方法:
- (void)sChart:(ShinobiChart *)chart alterTickMark:(SChartTickMark *)tickMark beforeAddingToAxis:(SChartAxis *)axis
{
if (axis.isXAxis) {
// Adjusting tickmark labels
UILabel *label = [tickMark tickLabel];
CGFloat maxLabelWidth = axis.axisFrame.size.width/[axis.axisRange.span floatValue];
CGRect labelFrame = label.frame;
labelFrame.size.width = maxLabelWidth;
[label setFrame:labelFrame];
}
}
看那longestLabelStringOn委托方法。例如:
func sChart(_ chart: ShinobiChart, longestLabelStringOn axis: SChartAxis) -> String? {
if axis == chart.xAxis{
return "Longest Possible String"
}
else{
return ""
}
}