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;
}
}
}