Unity 文字高度自适应

期望

文字有字号限制,输入文字文字后先判断高度是否适用于限制字号,若处于最小字号时高度任不适用,则调整RectTransform 的高度。

核心代码

每次输入文字时先将字号设定为原始字号。

comp.fontSize = fontSize;
comp.text = content;

 拓展Text 调用自适应脚本里的设定文字方法。

public static class ExtensionText
{
    public static void SetText(this Text text, string content)
    {
        if (text.GetComponent())
        {
            text.GetComponent().SetText(content);
        }
        else
        {
            text.text = content;
        }
    }
}

添加LayoutElement 组件用于限制最小高度。 

 添加ContentSizeFitter 组件用于自适应高度。

判断当前高度是否大于最小高度。

needAdapt = rect.rect.height > element.minHeight;

 当前高度大于最小高度,则先调整字号。

currentSize = comp.fontSize;
while (minSize < currentSize)
{
    currentSize--;
    comp.fontSize = currentSize;
    yield return new WaitForEndOfFrame();
    if (!needAdapt)
    {
        break;
    }
}

效果

你可能感兴趣的:(unity)