CCLabel在最大宽度已知的情况下如何获取实际宽高
当前环境在cocos2.2.6,
在UI摆图中,会遇到一种情况就是 设定了label的最大宽度MAX_WIDTH,但label的内容是动态的,如何在label输入了文字之后获取label的真实宽高?
对于一个没有指定contensize 和 dimensions 的label, 直接getContentSize(), 宽度没有超过最大宽度MAX_WIDTH,就是单行,那么直接getContentSize()就是实际的宽高,
如果宽度超过了最大限定值,那么就必须自动换行了,自动换行要使用setDimensions(maxwidth,maxheight),maxwidth已经知道就是MAX_WIDTH,maxheight是不知道的,我来告诉你这里maxheight可以直接用0,
你会发现,最终的label就是你所想要的在最大宽度下自动换了行,并且高度就是文字所占的实际高度。唔哈哈。
int MAX_WIDTH = ;
std::string str = "中文中文中文中文中文中文中文中文中文中文中文中文";
CCLabelTTF* label = CCLabelTTF::create(str.c_str(), font_name[].c_str(), );
label->setPosition(ccp(winSize.width/,winSize.height/));
label->setHorizontalAlignment(CCTextAlignment::kCCTextAlignmentLeft);
//label->setContentSize(CCSize(100,400));
//label->setDimensions(CCSize(100, 400));
addChild(label); CCSize size = label->getContentSize();
CCLog("width: %f ,height: %f", size.width, size.height); if (size.width > MAX_WIDTH)
{
label->setDimensions(CCSize(MAX_WIDTH,));
}
else
{ }
size = label->getContentSize();
CCLog("width: %f ,height: %f", size.width, size.height);
CCLabel在最大宽度已知的情况下如何获取实际宽高的更多相关文章
- 无法在“EntityFramework”已存在的情况下创建影像复制该文件的解决方案
问题产生的原因:你项目正在生成中你就打开浏览器预览了,导致这个问题解决方案:右击重新生成项目,等生成后再打开 “/”应用程序中的服务器错误. 无法在“EntityFramework”已存在的情况下创建 ...
- JS获取元素宽高的两种情况
JS获取元素宽高分两种情况, 一.内联样式,也就是直接把width和height写在HTML元素中的style里: 这种情况使用 document.getElementById('xxx'). ...
- NGINX转发代理情况下,获取客户单真实IP
编译时加上http_realip_module 模块 realip模块生效的前提是:直接连接nginx的ip是在set_real_ip_from中指定的. 原机配置: set_real_ip_from ...
- Jquery.Datatables td宽度太长的情况下,自动换行
在 td 里面 加上 style="word-wrap:break-word;" 自动换行就好了,如果不想换行,可以将超出内容设为隐藏, overflow:hidden; whit ...
- 根据已知日期(yyyy-MM-dd)获取前n天的日期区间
//获取天 var pubTime="2017-12-30" function buildDay(num){ num=num-1; var myDate = new Date(pu ...
- android 点滴记录 ICCID IMSI IMEI MEID 关系 和 区别,相关参数在什么情况下可以获取...
1:ICCID:Integrate circuit card identity 集成电路卡识别码(固化在手机SIM卡中) ICCID为IC卡的唯一识别号码,共有20位数字组成,其编码格式为:XXXXX ...
- 如果有反向代理的情况下,获取最原始的IP的办法
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_HOST"];
- vue 动态获取div宽高有时候为0的情况
项目背景: 需要使用echarts进行图表展示.由于div宽高是不固定的,因此需要先获取父级的宽高再把值赋予到图表的div中. 需要使用 this.$nextTick(() => { }) ...
- 布局:高度已知,布局一个三栏布局,左栏和右栏宽度为200px,中间自适应
需求:高度已知为200px,写出三栏布局,左栏和右栏各位200px,中间自适应,如下图所示: 方法一:float浮动布局 原理是:定义三个区块,需要注意的是中间的区块放在右边区块的下面,统一设置高度为 ...
随机推荐
- eclipse和myeclipse一键取消所有断点
- jQuery 效果 —— 滑动
jQuery 效果 -- 滑动 1.向下滑动元素 (1)使用slideDown()方法可以用于向下滑动元素 $("button").click(function(){ $(&quo ...
- Linux 执行ll命令时指定按文件时间或大小排序
按时间排序: $ ll -ht 按大小排序: $ ll -hS 使用--help查看命令的用法,如 $ ll --help
- Zookeeper第一课 安装和配置
简介: Zookeeper,是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务,它包含一个简单的原语集,来实现同步.配置维护.分集群.命名的服务. zookeeper是一个由多 ...
- javascript 去掉空格之后的字符 正则表达式
从后端数据库读取时间时,经常会把整个日期年月日包括时分秒都取到,如2015-1-28 14:56:00,但是一般的我们只需要前面的年月日就行了.一个简单的方法,直接用split(" &quo ...
- redis 数据导出
一.导出所有的keys echo "keys 201*" |./redis-cli -h localhost -p 6379 -a password >> 1.txt ...
- GIT warning: LF will be replaced by CRLF.
git config --global core.autocrlf false git config --global core.autocrlf false
- 浅谈Eclipse的更新、升级和MyEclipse插件的安装方法
用的是如下图所示的eclipse标准版演示: 先谈下eclipse下安装MyEclipse插件的过程: 第一种方法:通过MyEclipse的存档进行离线更新 1,到MyEclipse官网进入下载页面, ...
- Qt工程转化为Vs工程
cmd中输入: qmake -tp vc XXX.pro 一般需要将qmake的路径配置到系统环境变量中去...
- sqlite数据类型
sqlite数据类型(时间 日期 double等) sqlite3支持的数据类型: NULL.INTEGER.REAL.TEXT.BLOB但是,sqlite3也支持如下的数据类型smallin ...