2014-04-16 87 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 "" 
     } 
    }