如何给label添加背景色?并且背景宽度自适应label里面的文字长度?
最好还能支持圆角,最好不要用js动态计算的方式。
我现在是用node添加子元素lable来实现背景色,但是宽度不能自适应label文字的长度
用Layout组件作为lable的父节点,resize mode选container
我也是用这样的做法
我之前用的方法是根据中英文预估文本长度
这样不好,我刚才看了api,找到了一种比较好的方式。
this.tip.string = ‘点击了:’ + imgConfig[customEventData].path
this.tip._updateRenderData(true);
this.tipBox.width = this.tip.node.width + 40
先设置string后,然后调用_updateRenderData方法后,可以在node里面获取到加入真实的宽度。
嗯,我试试
这种很多问题吧,因为不同设备表现出来的字符宽度不一样
我之前是延迟一帧然后去获取lable的width
感觉它这个像是个bug,不能立刻获取到label的真实宽度
有好的方案么 ?
显然就是layout做父节点比较好,layout上添加一个sprite作为背景,type选sliced,背景图编辑一下九宫格
这样不好,我刚才看了api,找到了一种比较好的方式。
this.tip.string = ‘点击了:’ + imgConfig[customEventData].path
this.tip._updateRenderData(true);
this.tipBox.width = this.tip.node.width + 40
先设置string后,然后调用_updateRenderData方法后,可以在node里面获取到加入真实的宽度。
比较推这种方式,毕竟不是每一个都要做背景图,效能使用上影响不大,若是每一个都这样用就会有差

嗯,你有更好的方法吗?
估计cocos也是考虑性能,才会搞这样一个类似异步一样的操作