2014-04-16 60 views
1

我有名称与年龄的关系图,其中名称位于x轴上,值位于Y轴上。 问题是名称在x轴上重叠,看起来不太好。Shinobi图表中的X轴标签格式化

,因为我们放大我找不到表示第x轴截断名称值和任何格式完整。

有什么办法,以显示与椭圆或其他格式的其中姓名将不会重叠的名字呢?

回答

4

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工作。

0

如果您需要调整列系列和缩放刻度标签宽度被启用(这使得缩放手势后标签更多的空间),只是实现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]; 
    } 
} 
0

看那longestLabelStringOn委托方法。例如:

func sChart(_ chart: ShinobiChart, longestLabelStringOn axis: SChartAxis) -> String? { 
     if axis == chart.xAxis{ 
      return "Longest Possible String" 
     } 
     else{ 
      return "" 
     } 
    }