我有名稱與年齡的關係圖,其中名稱位於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 ""
}
}