zoukankan      html  css  js  c++  java
  • CCLabel在最大宽度已知的情况下如何获取实际宽高

    当前环境在cocos2.2.6,

     在UI摆图中,会遇到一种情况就是 设定了label的最大宽度MAX_WIDTH,但label的内容是动态的,如何在label输入了文字之后获取label的真实宽高?

    对于一个没有指定contensize 和 dimensions 的label, 直接getContentSize(), 宽度没有超过最大宽度MAX_WIDTH,就是单行,那么直接getContentSize()就是实际的宽高,

    如果宽度超过了最大限定值,那么就必须自动换行了,自动换行要使用setDimensions(maxwidth,maxheight),maxwidth已经知道就是MAX_WIDTH,maxheight是不知道的,我来告诉你这里maxheight可以直接用0,

    你会发现,最终的label就是你所想要的在最大宽度下自动换了行,并且高度就是文字所占的实际高度。唔哈哈。

    int MAX_WIDTH = 337;
        std::string str = "中文中文中文中文中文中文中文中文中文中文中文中文";
        CCLabelTTF* label = CCLabelTTF::create(str.c_str(), font_name[2].c_str(), 22);
        label->setPosition(ccp(winSize.width/2,winSize.height/2));
        label->setHorizontalAlignment(CCTextAlignment::kCCTextAlignmentLeft);
        //label->setContentSize(CCSize(100,400));
        //label->setDimensions(CCSize(100, 400));
        addChild(label);
    
    
        CCSize size = label->getContentSize();
        CCLog("  %f ,height: %f", size.width, size.height);
    
        if (size.width > MAX_WIDTH)
        {
            label->setDimensions(CCSize(MAX_WIDTH,0));
        }
        else
        {
    
        }
        size = label->getContentSize();
        CCLog("  %f ,height: %f", size.width, size.height);
  • 相关阅读:
    导入动态页面的两种方法
    JSTL之c:set
    CentOS更新源
    MVC轻量web应用
    Linux设备驱动开发流程(转)
    g++: internal compiler error: Killed (program cc1plus)Please submit a full bug report,内存不足问题解决
    .PHONY的作用
    CMake(转)
    关于a+++++b含义的问题
    返回值为函数指针的函数(转)
  • 原文地址:https://www.cnblogs.com/JD85/p/4536068.html
Copyright © 2011-2022 走看看