diff --git a/Runtime/Internal/BaseChart.cs b/Runtime/Internal/BaseChart.cs index f4161c28..0679b554 100644 --- a/Runtime/Internal/BaseChart.cs +++ b/Runtime/Internal/BaseChart.cs @@ -54,12 +54,15 @@ namespace XCharts [NonSerialized] private Legend m_CheckLegend = Legend.defaultLegend; [NonSerialized] private float m_CheckWidth = 0; [NonSerialized] private float m_CheckHeight = 0; + [NonSerialized] private Vector2 m_CheckMinAnchor; + [NonSerialized] private Vector2 m_CheckMaxAnchor; + [NonSerialized] private float m_CheckSerieCount = 0; [NonSerialized] private List m_CheckSerieName = new List(); - [NonSerialized] private bool m_RefreshChart = false; - [NonSerialized] private bool m_RefreshLabel = false; - [NonSerialized] private bool m_ReinitLabel = false; - [NonSerialized] private bool m_CheckAnimation = false; + [NonSerialized] protected bool m_RefreshChart = false; + [NonSerialized] protected bool m_RefreshLabel = false; + [NonSerialized] protected bool m_ReinitLabel = false; + [NonSerialized] protected bool m_CheckAnimation = false; [NonSerialized] protected List m_LegendRealShowName = new List(); protected Vector2 chartAnchorMax { get { return rectTransform.anchorMax; } } @@ -287,8 +290,8 @@ namespace XCharts private void InitSerieLabel() { - var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, chartAnchorMin, - chartAnchorMax, chartPivot, new Vector2(chartWidth, chartHeight)); + var labelObject = ChartHelper.AddObject(s_SerieLabelObjectName, transform, Vector2.zero, + Vector2.zero, Vector2.zero, new Vector2(chartWidth, chartHeight)); SerieLabelPool.ReleaseAll(labelObject.transform); int count = 0; for (int i = 0; i < m_Series.Count; i++) @@ -358,6 +361,13 @@ namespace XCharts { SetSize(sizeDelta.x, sizeDelta.y); } + + if (m_CheckMinAnchor != rectTransform.anchorMin || m_CheckMaxAnchor != rectTransform.anchorMax) + { + m_CheckMaxAnchor = rectTransform.anchorMax; + m_CheckMinAnchor = rectTransform.anchorMin; + m_ReinitLabel = true; + } } private void CheckTheme() @@ -523,6 +533,7 @@ namespace XCharts InitTitle(); InitLegend(); InitTooltip(); + InitSerieLabel(); } protected virtual void OnThemeChanged() diff --git a/Runtime/Internal/CoordinateChart.cs b/Runtime/Internal/CoordinateChart.cs index f33ec5f1..561555c3 100644 --- a/Runtime/Internal/CoordinateChart.cs +++ b/Runtime/Internal/CoordinateChart.cs @@ -1348,6 +1348,7 @@ namespace XCharts } break; } + m_RefreshLabel = true; serieData.labelPosition = pos; if (serie.label.show) DrawLabelBackground(vh, serie, serieData); } @@ -1372,6 +1373,7 @@ namespace XCharts if (j >= serie.dataPoints.Count) break; var serieData = serie.data[j]; var pos = serie.dataPoints[j]; + serieData.SetGameObjectPosition(serieData.labelPosition); serieData.UpdateIcon(); if (serie.show && serie.label.show && serieData.canShowLabel)