cocos2d-x 中lua自动控制label宽度(适用于多国语言版)

 

-- 限制label的宽度, 当达到limitWidth时,添加省略号 ...
function SetLabelStringByLimitWidthOfOtherStr(labelObj,limitWidth,otherStr)
    -- body
    local function getStrMap(str)
        -- body
        local  strTab = {}
        for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do
            strTab[#strTab+1] = uchar
        end
        return strTab
    end
    if labelObj:getContentSize().width <= limitWidth then return end
    local labelStr = labelObj:getString()
    local strMap = getStrMap(labelStr)
    labelObj:setDimensions(0,0)
    local setStr = ""
    local tempStr2 = ""
    local otherStr = otherStr
    for k,v in pairs(strMap) do
        local tempStr = tempStr2..v
        labelObj:setString(tempStr..otherStr)
        if labelObj:getContentSize().width > limitWidth then
            break
        else
            tempStr2 = tempStr
        end    
    end
    setStr = setStr..tempStr2..otherStr
    labelObj:setString(setStr)

 

end

 

 

function getLabelStringByLimitWidth(labelStr,limitWidth)
    -- body
    local function getStrMap(str)
        -- body
        local  strTab = {}
        for uchar in string.gfind(str, "[%z\1-\127\194-\244][\128-\191]*") do
            strTab[#strTab+1] = uchar
        end
        return strTab
    end 
    local labelStr = labelStr
    local strMap = getStrMap(labelStr)
    local setStr = ""
    local tempStr2 = ""
    for k,v in pairs(strMap) do
        local tempStr = tempStr2..v
        labelObj:setString(tempStr)
        if labelObj:getContentSize().width > limitWidth then
            tempStr2 = tempStr2.."\n"
            setStr = setStr..tempStr2
            tempStr2 = ""
        else
            tempStr2 = tempStr
        end    
    end
    setStr = setStr..tempStr2
    return setStr
end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值