diff --git a/CHANGELOG.md b/CHANGELOG.md index c3d8134e..7e00f1b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # 更新日志 +* (2020.03.13) 修复`LineChart`的`label`偏移显示异常的问题 * (2020.03.11) 发布`v1.3.0`版本 * (2020.03.11) 优化`LineChart`的`label`偏移显示 * (2020.03.11) 优化清空并重新添加数据后的自动刷新问题 diff --git a/Runtime/Internal/BaseChart.cs b/Runtime/Internal/BaseChart.cs index a0316657..593fba5a 100644 --- a/Runtime/Internal/BaseChart.cs +++ b/Runtime/Internal/BaseChart.cs @@ -821,7 +821,10 @@ namespace XCharts var labelHalfWid = serieData.GetLabelWidth() / 2; var labelHalfHig = serieData.GetLabelHeight() / 2; var serieLabel = serieData.GetSerieLabel(serie.label); - var centerPos = serieData.labelPosition + serieLabel.offset; + var invert = serie.type == SerieType.Line + && SerieHelper.IsDownPoint(serie, serieData.index) + && !serie.areaStyle.show; + var centerPos = serieData.labelPosition + serieLabel.offset * (invert ? -1 : 1); var p1 = new Vector3(centerPos.x - labelHalfWid, centerPos.y + labelHalfHig); var p2 = new Vector3(centerPos.x + labelHalfWid, centerPos.y + labelHalfHig); var p3 = new Vector3(centerPos.x + labelHalfWid, centerPos.y - labelHalfHig); diff --git a/Runtime/Internal/CoordinateChart.cs b/Runtime/Internal/CoordinateChart.cs index eceb08ee..8c02ff5d 100644 --- a/Runtime/Internal/CoordinateChart.cs +++ b/Runtime/Internal/CoordinateChart.cs @@ -1447,6 +1447,7 @@ namespace XCharts for (int j = 0; j < serie.data.Count; j++) { var serieData = serie.data[j]; + serieData.index = j; if ((serie.label.show || serieData.iconStyle.show)) { @@ -1527,8 +1528,8 @@ namespace XCharts content = serie.label.GetFormatterContent(serie.name, serieData.name, value, total); } serieData.SetLabelActive(value != 0 && serieData.labelPosition != Vector3.zero); - var down = serie.type == SerieType.Line && SerieHelper.IsDownPoint(serie, j); - serieData.SetLabelPosition(down ? -serie.label.offset : serie.label.offset); + var invert = serie.type == SerieType.Line && SerieHelper.IsDownPoint(serie, j) && !serie.areaStyle.show; + serieData.SetLabelPosition(invert ? -serie.label.offset : serie.label.offset); if (serieData.SetLabelText(content)) RefreshChart(); } else