木骰

NGUI:一个自适应的UILabel

一个可以自适应的UILabel。可以设置一个最大的宽度maxWidth.当Label的宽度小于这个maxWidth的时候UILabel的类型是resizeFree的,也就是只有一行,宽度适应文本宽度。当宽度大于这个maxWidth的时候,就设置为resizeHeight,改为适应高度。
另为如果有背景图片的话只需要设置一下锚点,适应UILabel的尺寸就可以了。

把脚本挂载UILabel下,
然后把OverFlow设置成ResizeFreely。
选一个合适的对齐方式Alignment,这个设置可以让UILabel的对齐方式可以不用受Pivot设置的影响。
然后再设置一下Pivot,这个决定了之后Label的尺寸延伸的方向。

然后给TextAdapt设置一个Width的值

当label的宽度超过设置的width的时候,执行一下adapt操作,Label就改成高度适应了


如果有背景图片的话只需要给背景图设置一个锚点来适应Label就可以了


using UnityEngine;
using System.Collections;

public class TextAdapt : MonoBehaviour {

	public float offset;
    public float maxWidth;

    UILabel lbl;

    void Awake()
    {
        lbl = transform.GetComponent();
    }


    public void SetValue(string content)
    {
        content = content ?? string.Empty;
        lbl.text = content;
        Adapt();
    }

    [ContextMenu("Adapt")]
    public void Adapt()
    {
    	if(!Application.isPlaying)
    		Awake();
        var size = lbl.printedSize;
        if (size.x>=maxWidth)
        {
            lbl.overflowMethod = UILabel.Overflow.ResizeHeight;
            lbl.maxWidth = (int)(maxWidth+offset);
        }else
        {
            lbl.overflowMethod = UILabel.Overflow.ResizeFreely;
        }
    }
}
— 于 共写了935个字
— 文内使用到的标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*