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);
  • 相关阅读:
    初学微信小程序 TodoList
    设计一个基于svg的涂鸦组件(一)
    基于51单片机的12864驱动
    java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例
    ios UIWebView 播放优酷土豆视频
    VMware Player 使用错误集锦
    Django 使用UEditor
    Entity Framework底层操作封装V2版本号(3)
    cocos2dx笔记1:概述
    oracle10g精简版安装步骤
  • 原文地址:https://www.cnblogs.com/JD85/p/4536068.html
Copyright © 2011-2022 走看看