如题,按照中文的编写逻辑,换行时每一行第一个字符不能是标点符号。按照label的自动换行逻辑,目前处理不了这个问题。
目前自己的一个处理方法是
第一步:一段文本,根据label的尺寸和字体的大小进行字符数量计算,看看一行正常满符多少个字符,例如15个字符为一行。
第二步:截取文本文件前15个字符,检测其中是否有半符的符号,然后从剩余的字符中向上填充字符。
第三步:截取剩余文本中第一个字符是否为标点符号,如果是,提到上一组字符组中。
第四步:最终会得到一个string数组的字符串数组。
第五步:label.string赋值时,将数组拼合成一个string字符串,数组之间用’\n’换行符穿插。
这样子可以处理简单的中文文字排版问题,当然也会存在一些局限性问题,例如:
1、这样子每一行第一个字符会存放在上一行的末尾。因此label组件需要右侧预留出两个字符的空间进行存放标点符号。
2、ttf字体包中标点符号需要将占位符统一,中文标点调整为满字符或半字符,包括数字,标调符号等等,需要调整。
3、因为每一行都需要多次的计算,所以行数比较多的情况下性能问题会比较明显。
论坛中发起讨论贴,希望有更好的解决方法。