Unity——UGUI的ScrollView根据每行显示的汉字数、行高度,适应文本长度

使用ScrollView做文字显示时,能实现较长的文字可以通过拖拽来查看未显示完全的内容。那么如何来确定ScrollView下Content的GridLayoutGroup要设置多大,才能刚好显示所有文字,不会有显示不全或空余较多空间的现象。对于不确定文字量的情况下,或需要动态更新文字的时候,就要让GridLayoutGroup根据需要动态设置来满足实际开发需求。

首先我们需要知道要设置多大的字号,即每行显示多少字,一行有多高,通过运算得出GridLayoutGroup中需要设置的CellSize值。代码如下:

    Text text;
    RectTransform recttrans;
    private int fontNumPerLine = 20;
    private int fontLineHeight = 60;
    private GridLayoutGroup glg;    
    
    void ScrollViewText() {
        glg = transform.GetComponentInParent();
        text = GetComponent();
        recttrans = GetComponent();
        string str = text.text;
        recttrans.sizeDelta = new Vector2(glg.cellSize.x, (str.Length / fontNumPerLine + 1) * fontLineHeight);
        glg.gameObject.GetComponent().sizeDelta=new Vector2(recttrans.sizeDelta.x, recttrans.sizeDelta.y);
        glg.cellSize = new Vector2(glg.cellSize.x, recttrans.sizeDelta.y);
        
    }

为了方便,我的代码直接挂到Content下的Text上。可以根据实际情况进行修改开发。

你可能感兴趣的:(Unity——UGUI的ScrollView根据每行显示的汉字数、行高度,适应文本长度)