From 34dd3d1c4e6cb78bd31d72648d402d4db97c88fa Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Thu, 25 Aug 2022 08:37:17 +0800 Subject: [PATCH] [improve][MarkLine] improve label --- CHANGELOG.md | 3 +++ Runtime/Component/Mark/MarkLineHandler.cs | 14 +++++++------- Runtime/Component/Mark/MarkLineHelper.cs | 3 +++ Runtime/Serie/Scatter/BaseScatterHandler.cs | 1 + 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f0bc2cc..d4c366bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,9 @@ ## master +* (2022.08.24) 修复`ScatterChart`的`label`不刷新的问题 +* (2022.08.24) 修复`MarkLine`的`label`某些情况下显示异常的问题 + ## v3.2.0 ### 版本要点 diff --git a/Runtime/Component/Mark/MarkLineHandler.cs b/Runtime/Component/Mark/MarkLineHandler.cs index 55d211df..6ac01410 100644 --- a/Runtime/Component/Mark/MarkLineHandler.cs +++ b/Runtime/Component/Mark/MarkLineHandler.cs @@ -35,8 +35,9 @@ namespace XCharts.Runtime { if (data.runtimeLabel != null) { - data.runtimeLabel.SetActive(data.label.show); - data.runtimeLabel.SetPosition(MarkLineHelper.GetLabelPosition(data)); + var pos = MarkLineHelper.GetLabelPosition(data); + data.runtimeLabel.SetActive(data.label.show && pos != Vector3.zero); + data.runtimeLabel.SetPosition(pos); data.runtimeLabel.SetText(MarkLineHelper.GetFormatterContent(serie, data)); } } @@ -76,10 +77,10 @@ namespace XCharts.Runtime var content = MarkLineHelper.GetFormatterContent(serie, data); var label = ChartHelper.AddChartLabel(textName, m_MarkLineLabelRoot.transform, data.label, chart.theme.axis, content, Color.clear, TextAnchor.MiddleCenter); - + var pos = MarkLineHelper.GetLabelPosition(data); label.SetIconActive(false); - label.SetActive(data.label.show); - label.SetPosition(MarkLineHelper.GetLabelPosition(data)); + label.SetActive(data.label.show && pos != Vector3.zero); + label.SetPosition(pos); data.runtimeLabel = label; }; data.refreshComponent(); @@ -202,8 +203,7 @@ namespace XCharts.Runtime for (int i = 0; i < markLine.data.Count; i++) { var data = markLine.data[i]; - // data.index = i; - data.index = markLine.index; + data.index = i; if (data.group == 0) continue; if (!m_TempGroupData.ContainsKey(data.group)) { diff --git a/Runtime/Component/Mark/MarkLineHelper.cs b/Runtime/Component/Mark/MarkLineHelper.cs index 55304ff4..4a1c5dcd 100644 --- a/Runtime/Component/Mark/MarkLineHelper.cs +++ b/Runtime/Component/Mark/MarkLineHelper.cs @@ -34,13 +34,16 @@ namespace XCharts.Runtime switch (data.label.position) { case LabelStyle.Position.Start: + if (data.runtimeStartPosition == Vector3.zero) return Vector3.zero; if (horizontal) return data.runtimeStartPosition + data.label.offset + labelWidth / 2 * Vector3.left; else return data.runtimeStartPosition + data.label.offset + labelHeight / 2 * Vector3.down; case LabelStyle.Position.Middle: + if (data.runtimeCurrentEndPosition == Vector3.zero) return Vector3.zero; var center = (data.runtimeStartPosition + data.runtimeCurrentEndPosition) / 2; if (horizontal) return center + data.label.offset + labelHeight / 2 * Vector3.up; else return center + data.label.offset + labelWidth / 2 * Vector3.right; default: + if (data.runtimeCurrentEndPosition == Vector3.zero) return Vector3.zero; if (horizontal) return data.runtimeCurrentEndPosition + data.label.offset + labelWidth / 2 * Vector3.right; else return data.runtimeCurrentEndPosition + data.label.offset + labelHeight / 2 * Vector3.up; } diff --git a/Runtime/Serie/Scatter/BaseScatterHandler.cs b/Runtime/Serie/Scatter/BaseScatterHandler.cs index 0d9be98f..8d8f0220 100644 --- a/Runtime/Serie/Scatter/BaseScatterHandler.cs +++ b/Runtime/Serie/Scatter/BaseScatterHandler.cs @@ -12,6 +12,7 @@ namespace XCharts.Runtime public override void Update() { + base.Update(); UpdateSerieContext(); }