参考了star特530的博客。原文链接
按照上文去做,如果遇到文本是中英混合就会出现中文乱码。以下是改进后的方法
-- Label文本换行
function FunSetLinefeed( strText, nLineWidth ) --文本,行宽
--读取每个字符做中文英文判断,并且记录大小
local nStep = 1
local index = 1
local ltabTextSize = {}
while true do
c = string.sub(strText, nStep, nStep)
b = string.byte(c)
if b > 128 then
ltabTextSize[index] = 3
nStep = nStep + 3
index = index + 1
else
ltabTextSize[index] = 1
nStep = nStep + 1
index = index + 1
end
if nStep > #strText then
break
end
end
--将字符按照限定行宽进行分组
local nLineCount = 1
local nBeginPos = 1
local lptrCurText = nil
local ltabText = {}
local nCurSize = 0
for i = 1, index - 1 do
nCurSize = nCurSize + ltabTextSize[i]
if nCurSi