CCLabelTTF的多行显示(仅限中文)

这个标题叫setDimensions的坑更贴切。缘起想要弄个自动换行的对话框功能,就想到了如何自动换行。

看到一个叫setDimensions的函数,设置可以显示的区域,超出部分进行换行.在网上找过一些例子发现似乎真的神奇可以自动换行。

但是实际上新建一个HelloWorld的例子发现出了问题,代码如下

CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
pLabel->setDimensions(CCSizeMake(50, 0)); // 设置显示区域
pLabel->setHorizontalAlignment(kCCTextAlignmentLeft);
// 水平方向左对齐
    // position the label on the center of the screen
    pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height - pLabel->getContentSize().height));
    // add the label as a child to this layer
    this->addChild(pLabel, 1);

结果出现的结果如下:

可以看到少了一段~如果把(CCSizeMake(50, 0)这个width设置得越小就越得越厉害.

好吧,再继续做实验,如果把"Hello World"换成"HelloWorld“效果就不一样了,中间的空格去掉。

就是这种结果

已经没有换行了,这里可以认为空格等同于\n换行符。也就是说这种情况下英文单词是不会被隔开的。

再来看看中文的显示。

中文的显示完全没有问题,这是因为中文单个就是个词,不像英文那样连在一起的,因此这个用于中文的多行显示是OK的。

因此纯中文的显示是可以用这个办法来偷懒的。

问题 是英文的多行显示怎么办?中英混合的多行显示又怎么办?

给个思路吧:通用的话只能根据编码来计算长度,够长度了就在后面+换行,或是重新创建一个新的CCLabelTTF

把这些拼起来就可以实现换行了。

转载自http://blog.csdn.net/nynyvkhhiiii/article/details/16987899

时间: 2024-10-11 04:01:24

CCLabelTTF的多行显示(仅限中文)的相关文章

SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题

一.SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 linux 设置系统语言 修改 /etc/sysconfig/i18n 文件,如 LANG="en_US.UTF-8",xwindow会显示英文界面, LANG="zh_CN.GB18030",xwindow会显示中文界面. 还有一种方法 cp /etc/sysconfig/i18n $HOME/.i18n 修改 $HOME/.i18n 文件(vim  $HOME/.i18n)

MYSQL 命令行显示乱码 解决方案

中文乱码是因为编码集不支持,所以要改变编码 先查看下设置的编码 使用如下命令 show variables like 'character%'; 在 mysql.conf (Ubuntu mysql5.5)中的 [client]区域加上 default-character-set = utf8 在[mysqld]区域加上 character_set_server = utf8 重启服务 原文地址:MYSQL 命令行显示乱码 解决方案

真正的手机破解wifi密码,aircrack-ng,reaver,仅限mx2(BCM4330芯片)

仅限mx2(BCM4330芯片),mx可能有戏没测试(BCM4329?),mx3不行. PS:原生安卓应用,非虚拟机 reaver,不知道是啥的看这里http://tieba.baidu.com/p/2682878857 抓包破解wifi密码 下载地址: http://pan.baidu.com/s/19qQ3M 依次安装4个包,注意BusyBox安装完成之后需要打开再点一次安装,安装完四个包之后重启手机 打开bcmon,点安装,然后点启动监听模式,按home返回桌面,打开AircrackGUI

visual studio 编辑窗口 设置固定选项卡 使窗口选项卡多行显示

工具>选项> 确定后 如图就可以多行显示了.

Python 一条语句如何在多行显示的问题

在做python学习的时候,我照着pdf,敲代码,遇到一大难题: return render_to_response('index.html',{'title':'my page','user':user,'book_list':book_list}) html: {{book_list}} 第一行代码,在我的vim编辑器里面,换行显示, 我启动server,然后通过browser 浏览,老是报错,可是,我发现,代码没错哈,然后搜资料,说用 “\" 就这样,保存后,重新刷新browser,就ok

GridView多行显示 TableAdapter没有Update 问题

1. 对应GridView多行显示,添加如下即可: this.dataGridView1.RowsDefaultCellStyle.WrapMode = DataGridViewTriState.True; ; 2. TableAdapter没有Update方法,可能是因为添加的时候没有添加主键,所以导致TableAdapter无法更新,添加主键即可.

pyqt QTableWidgetItem多行显示

def __2(self): t1=QtGui.QTableWidgetItem(self.names.text()) self.tabs.tableinsertinto.setItem(0,0,t1) t3=QtGui.QTableWidgetItem(self.mains.text()) self.tabs.tableinsertinto.setItem(0,2,t3) t4=QtGui.QTableWidgetItem(self.poohs.text()+self.addrs.text()

单行显示省略号和多行显示省略号

一.单行显示省略号 width: 239px;/*要显示文字的宽度*/ overflow:hidden; /*超出的部分隐藏起来.*/ white-space:nowrap;/*不显示的地方用省略号...代替*/ text-overflow:ellipsis;/* 支持 IE */ 二.多行显示省略号 overflow:hidden; /*超出的部分隐藏起来.*/ text-overflow:ellipsis;/* 支持 IE */ display:-webkit-box; //将对象作为弹性伸

iOS-UILable多行显示文本内容、根据文本长短自动计算文本框高度

iAronTalk Blog opens. The clean and elegantlife style deduces the deep thought of life. -=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= UILabel作为UIView家族中的一员,其应用广泛,使用方法清晰明了深受发烧友们喜欢,是为首选. 针