美文网首页学习封装
iOS_计算文本高度+计算文本宽度(封装类目:NSString+

iOS_计算文本高度+计算文本宽度(封装类目:NSString+

作者: 欧币杰昔 | 来源:发表于2016-06-21 18:46 被阅读475次

          在文本内容不一定的时候,文本框的大小没办法确定,文本框太小了会出现“...”,太大了会有很多空表区域,这时候如果可以计算文本内容需要多大的空间(宽、高),再来设置文本框的大小,就能解决此问题。

    上代码:

    /**

    *  计算文本高度方法

    *

    *  @param text    要计算的文本内容

    *  @param w        要显示的控件的宽度

    *  @param fontsize 控件显示文本的字体大小

    *

    *  @return 返回计算的文本占用位置的大小(含宽,高)

    */

    +(CGSize)calStrSize:(NSString*)text andWidth:(CGFloat)w andFontSize:(CGFloat)fontsize

    {

    CGSizesize=[text boundingRectWithSize:CGSizeMake(w,MAXFLOAT)options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:fontsize]}context:nil].size;

    returnsize;

    }

    这里需要给定文本框的宽度以及字体大小,就能计算出文本框需要多少高度,这时候再来设置文本框的大小就OK了。

    还有一种情况,文本内容少,不需要换行,但是需要计算文本会占用多少宽度

    例如:一排按钮,如果每个按钮的宽度一样,那按钮标题较长的按钮,跟其他按钮之间的空格看起来就小了,甚至出现“...”,这样很不美观。

    上代码:

    /**

    *  计算文本宽度方法

    *

    *  @param text    要计算的文本内容

    *  @param fontsize 控件显示文本的字体大小

    *

    *  @return 返回计算的文本占用位置的大小(含宽,高)

    */

    +(CGSize)calStrWith:(NSString*)text andFontSize:(CGFloat)fontsize

    {

    CGSizesize=[text boundingRectWithSize:CGSizeMake(MAXFLOAT,MAXFLOAT)options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName:[UIFontsystemFontOfSize:fontsize]}context:nil].size;

    returnsize;

    }

    给定文本内容及字体大小,就能知道文本所占的宽度。

    用在一排按钮上效果如图:

    分享封装好的类:链接: http://pan.baidu.com/s/1o8u5Nyq  密码: 3qig

    相关文章

      网友评论

        本文标题:iOS_计算文本高度+计算文本宽度(封装类目:NSString+

        本文链接:https://www.haomeiwen.com/subject/hnugdttx.html