mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-18 06:20:15 +00:00
增加LabelStyle的autoRotate可设置有角度的竖版文本的自动旋转
This commit is contained in:
@@ -65,6 +65,7 @@ slug: /changelog
|
||||
|
||||
## master
|
||||
|
||||
* (2023.03.12) 增加`LabelStyle`的`autoRotate`可设置有角度的竖版文本的自动旋转
|
||||
* (2023.03.09) 增加`Chart`的`onSerieClick`,`onSerieDown`,`onSerieEnter`和`onSerieExit`回调
|
||||
* (2023.03.09) 修复`Pie`的点击选中偏移不生效的问题
|
||||
* (2023.03.04) 增加`Legend`的`Positions`可自定义图例的位置
|
||||
|
||||
@@ -20,6 +20,7 @@ namespace XCharts.Editor
|
||||
PropertyField(prop, "m_AutoOffset");
|
||||
PropertyField(prop, "m_Offset");
|
||||
PropertyField(prop, "m_Distance");
|
||||
PropertyField(prop, "m_AutoRotate");
|
||||
PropertyField(prop, "m_Rotate");
|
||||
PropertyField(prop, "m_Width");
|
||||
PropertyField(prop, "m_Height");
|
||||
|
||||
@@ -576,13 +576,7 @@ namespace XCharts.Runtime
|
||||
{
|
||||
total = context.labelValueList.Count;
|
||||
}
|
||||
var labelShow = axisLabel.show && (axisLabel.interval == 0 || index % (axisLabel.interval + 1) == 0);
|
||||
if (labelShow)
|
||||
{
|
||||
if (!axisLabel.showStartLabel && index == 0) labelShow = false;
|
||||
else if (!axisLabel.showEndLabel && index == total - 1) labelShow = false;
|
||||
}
|
||||
return labelShow;
|
||||
return axisLabel.IsNeedShowLabel(index, total);
|
||||
}
|
||||
|
||||
public void SetNeedUpdateFilterData()
|
||||
|
||||
@@ -96,10 +96,10 @@ namespace XCharts.Runtime
|
||||
return new AxisLabel()
|
||||
{
|
||||
m_Show = true,
|
||||
m_Interval = 0,
|
||||
m_Inside = false,
|
||||
m_Distance = 8,
|
||||
m_TextStyle = new TextStyle(),
|
||||
m_Interval = 0,
|
||||
m_Inside = false,
|
||||
m_Distance = 8,
|
||||
m_TextStyle = new TextStyle(),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -168,5 +168,16 @@ namespace XCharts.Runtime
|
||||
}
|
||||
return base.GetFormatterContent(labelIndex, value, minValue, maxValue, isLog);
|
||||
}
|
||||
|
||||
public bool IsNeedShowLabel(int index, int total)
|
||||
{
|
||||
var labelShow = show && (interval == 0 || index % (interval + 1) == 0);
|
||||
if (labelShow)
|
||||
{
|
||||
if (!showStartLabel && index == 0) labelShow = false;
|
||||
else if (!showEndLabel && index == total - 1) labelShow = false;
|
||||
}
|
||||
return labelShow;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,6 +74,7 @@ namespace XCharts.Runtime
|
||||
[SerializeField] protected bool m_AutoOffset = false;
|
||||
[SerializeField] protected Vector3 m_Offset;
|
||||
[SerializeField] protected float m_Rotate;
|
||||
[SerializeField][Since("v3.6.0")] protected bool m_AutoRotate = false;
|
||||
[SerializeField] protected float m_Distance;
|
||||
[SerializeField] protected string m_Formatter;
|
||||
[SerializeField] protected string m_NumericFormatter = "";
|
||||
@@ -155,6 +156,15 @@ namespace XCharts.Runtime
|
||||
set { if (PropertyUtil.SetStruct(ref m_Rotate, value)) SetComponentDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// auto rotate of label.
|
||||
/// |是否自动旋转。
|
||||
/// </summary>
|
||||
public bool autoRotate
|
||||
{
|
||||
get { return m_AutoRotate; }
|
||||
set { if (PropertyUtil.SetStruct(ref m_AutoRotate, value)) SetComponentDirty(); }
|
||||
}
|
||||
/// <summary>
|
||||
/// 距离轴线的距离。
|
||||
/// </summary>
|
||||
public float distance
|
||||
|
||||
@@ -169,6 +169,11 @@ namespace XCharts.Runtime
|
||||
if (m_LabelText != null) m_LabelText.SetColor(color);
|
||||
}
|
||||
|
||||
public void SetRotate(float rotate)
|
||||
{
|
||||
transform.localEulerAngles = new Vector3(0, 0, rotate);
|
||||
}
|
||||
|
||||
public void SetTextRotate(float rotate)
|
||||
{
|
||||
if (m_LabelText != null) m_LabelText.SetLocalEulerAngles(new Vector3(0, 0, rotate));
|
||||
@@ -196,16 +201,15 @@ namespace XCharts.Runtime
|
||||
|
||||
public void SetActive(bool flag)
|
||||
{
|
||||
if (m_Active != flag)
|
||||
{
|
||||
m_Active = flag;
|
||||
ChartHelper.SetActive(gameObject, flag);
|
||||
}
|
||||
m_Active = flag;
|
||||
ChartHelper.SetActive(gameObject, flag);
|
||||
}
|
||||
|
||||
public void SetTextActive(bool flag)
|
||||
{
|
||||
if (m_LabelText != null) m_LabelText.SetActive(flag);
|
||||
}
|
||||
|
||||
public void SetIconActive(bool flag)
|
||||
{
|
||||
isIconActive = flag;
|
||||
|
||||
@@ -234,6 +234,7 @@ namespace XCharts.Runtime
|
||||
}
|
||||
var halfDegree = (serieData.context.toAngle - startDegree) / 2;
|
||||
serieData.context.halfAngle = startDegree + halfDegree;
|
||||
serieData.context.angle = startDegree + halfDegree;
|
||||
serieData.context.offsetCenter = serie.context.center;
|
||||
serieData.context.insideRadius = serie.context.insideRadius;
|
||||
if (offset > 0)
|
||||
|
||||
@@ -503,6 +503,13 @@ namespace XCharts.Runtime
|
||||
var labelPosition = GetSerieDataLabelPosition(serieData, currLabel);
|
||||
var offset = GetSerieDataLabelOffset(serieData, currLabel);
|
||||
serieData.labelObject.SetPosition(labelPosition + offset);
|
||||
if (currLabel.autoRotate && serieData.context.angle != 0)
|
||||
{
|
||||
if (serieData.context.angle > 90 && serieData.context.angle < 270)
|
||||
serieData.labelObject.SetRotate(180 - serieData.context.angle);
|
||||
else
|
||||
serieData.labelObject.SetRotate(-serieData.context.angle);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual Vector3 GetSerieDataLabelPosition(SerieData serieData, LabelStyle label)
|
||||
|
||||
Reference in New Issue
Block a user