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; }原文链接:https://www.f2er.com/cocos2dx/342826.html