--智能换行
--
-- @param {txt} txt -- 要设置的文本框
-- @param {String} str -- 要设置的字符
-- @param {number} width-- 换行的宽度
--
function UICommon.AInewLine(txt,str,width)
local FinalStr=""--最终的字符串
local CurStr=""--循环的时候每次加载的单个字符
local newStr="" --每一轮加载的字符串,每次换行为1轮
local newStrBk = ""--每一轮遇到空格的备份
local spaceMark = 0--空格的标记
for i=0,#str do
CurStr=string.sub(str,i,i)
newStr=newStr..CurStr
txt:setString(newStr)--每次载入一个字符后去设置新的文本,得到新的宽度
if string.byte(CurStr)==32 then --遇到空格就标记,并且备份最新一行的文本
spaceMark=i+1
newStrBk=newStr.."\n"
end
if txt:getContentSize().width>width then--当文本最新一行尺寸大于设定的宽度时开始做换行处理
if string.byte(CurStr)==32 or i-spaceMark > 10 then--正常换行
FinalStr=FinalStr..newStr.."\n"
newStr=""
else--跳转到上一个空格换行
FinalStr=FinalStr..newStrBk
newStr=""
txt:setString(newStr)
for j=spaceMark,i do--换行后补全空格后面的元素做为新一行的文本
CurStr=string.sub(str,j,j)
newStr=newStr..CurStr
end
end
end
end
txt:setString(FinalStr..newStr)
end