label的文字溢出改为RESIZE_HEIGHT延迟一帧height才生效


如图,外面有个scrollview,想通过RESIZE_HEIGHT自动来改变根节点content的height,获取时必须延迟一帧才行

 this.scheduleOnce(() => {

        this.scvContent.getComponent(UITransform).contentSize = new Size(800,  this.labelContent.getComponent(UITransform).contentSize.height);
   

        });

经典问题了。
首先,这是正常设定,很多关于表现层的东西都是这样的,会延时更新。
1表现层一般作为逻辑的终端,并且从用户角度来说,一帧的差距是肉眼无法分辨的。所以允许延时一帧。
2使用延时更新计算机制,可以避免因为使用for循环之类的方式大量修改ui属性造成计算的卡顿。

解决方案:
当遇到了这种需要获取ui尺寸的需求时,可以通过延时去获取,或者使用引擎api的强制更新接口,立即更新ui尺寸。

可以试下这个接口

3赞

如果想马上获取设置后的Label 尺寸,先调用一下 updateRenderData();

感谢各位大佬!已经可以了 :clap: :clap:
this.labelContent.getComponent(Label).updateRenderData(true);