Cocos2D-X下,iOS设备显示多行文字显示不全的问题

Cocos2D-X下,iOS设备显示多行文字显示不全的问题,第1张

概述iOS下,如果文字中包含多个“\n”,而且是ignoreContentSize模式的话,会出现一个离奇的bug,就是会显示不全。例如如下文字: 用于把弓箭\n兵进阶为弩\n兵。 \n\n一种利用机械力量射\n箭的弓,减少士兵力量消\n耗。 最终显示效果会变成: 用于把弓箭兵进阶为弩兵。 一种利用机械力量射箭的弓,减少士兵力量消 其中的「耗。」就无端端被吃了,扒了一下源码,发现问题出在CCDevic

iOS下,如果文字中包含多个“\n”,而且是ignoreContentSize模式的话,会出现一个离奇的BUG,就是会显示不全。例如如下文字:

用于把弓箭\n兵进阶为弩\n兵。
\n\n一种利用机械力量射\n箭的弓,减少士兵力量消\n耗。

最终显示效果会变成:

用于把弓箭兵进阶为弩兵。


一种利用机械力量射箭的弓,减少士兵力量消

其中的「耗。」就无端端被吃了,扒了一下源码,发现问题出在CCDevice.mm身上。_calculateStringSize这个函数在计算高度的时候,出了问题。(我很好奇,iOS下没雅黑,它的UIFont怎么可创建的……)只要修改一下_calculateStringSize这个函数,就能修复这个BUG了。代码如下:

static CGSize _calculateStringSize(Nsstring *str,ID Font,CGSize *constrainSize){    CGSize dim = CGSizeZero;    CGSize textRect = CGSizeZero;    textRect.wIDth = constrainSize->wIDth > 0 ? constrainSize->wIDth    : 0x7fffffff;    textRect.height = constrainSize->height > 0 ? constrainSize->height    : 0x7fffffff;        CGSize tmpReCal =  [str sizeWithFont:Font constrainedToSize:textRect];    dim.wIDth = ceilf(tmpReCal.wIDth);    dim.height = ceilf(tmpReCal.height);        return dim;}
总结

以上是内存溢出为你收集整理的Cocos2D-X下,iOS设备显示多行文字显示不全的问题全部内容,希望文章能够帮你解决Cocos2D-X下,iOS设备显示多行文字显示不全的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1059591.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存