Cocos Creator 之 Label的实际宽高改变文本背景大小及常用方法

有些情况下,我们需要根据文本的宽、高动态设置文本背景的大小。

这里汇总了几种一些案例,以及一些文本转换的常用方法,希望对您有用。

下面是3.0以后的,主要用到的是强制刷新label,然后可以获取实际的宽高
label.updateRenderData(true)

const desc = "这是一段文本内容这是一段文本内容";
const label = this.labelNode.getComponent(Label);
label.string = desc;

// 立即更新渲染数据,用于获取文本的实际宽高
label.updateRenderData(true);

// 检测文本宽度是否超过限定宽度,倘若超过则设置溢出模式
const labelWidth = this.labelNode.getComponent(UITransform).width;
if (labelWidth > 450) {
    label.overflow = Overflow.RESIZE_HEIGHT;
    this.labelNode.getComponent(UITransform).width = 450;
    label.updateRenderData(true);
}

// 根据文本的宽高设置修改背景宽高
const labelSize = this.labelNode.getComponent(UITransform).contentSize;
const bgTransform = this.bgNode.getComponent(UITransform);
bgTransform.setContentSize(labelSize.width, labelSize.height);

2.x的版本里强制刷新label的方法是:_forceUpdateRenderData();

label.getComponent(cc.Label).string = msg;
label.getComponent(cc.Label)._forceUpdateRenderData();

转自:https://blog.csdn.net/qq_24726043/article/details/148216548