IOS 计算文字尺寸(UILabel)

 方式1 :普通用法


#define  MJNameFont [UIFont systemFontOfSize:14]


/*
* * 计算文字尺寸 * * @param text 需要计算尺寸的文字 * @param font 文字的字体 * @param maxSize 文字的最大尺寸 */ - (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxSize:(CGSize)maxSize { NSDictionary *attrs = @{NSFontAttributeName : font};
   // 字体占用屏幕的宽度和高度
return [text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size; }

调用方法 1.

   // 文字的字体
    CGSize nameSize = [self sizeWithText:self.status.name font:MJNameFont maxSize:CGSizeMake(MAXFLOAT, MAXFLOAT)];

CGFloat nameX
= CGRectGetMaxX(self.iconView.frame) + padding; CGFloat nameY = iconY + (iconH - nameSize.height) * 0.5; self.nameView.frame = CGRectMake(nameX, nameY, nameSize.width, nameSize.height);

方式 2.

创建一个扩展NSString类


#import
"NSString+Extension.h" @implementation NSString (Extension)

/**

 *  返回字符串所占用的尺寸

 *

 *  @param font    字体

 *  @param maxSize 最大尺寸

 */

- (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize
{
    NSDictionary *attrs = @{NSFontAttributeName : font};
    //    return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
    
    return [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
}
@end

调用

    //文字计算的最大尺寸
    CGSize textMaxSize=CGSizeMake(150, MAXFLOAT);
    //文字计算出来的真实尺寸(按钮内部label的尺寸)
    CGSize textRealSize=[message.text sizeWithFont:MJTextFont maxSize:textMaxSize];
    
//    CGSize textSize=[self sizeWithText:message.text font:MJTextFont maxSize:textMaxSize];

    // 按钮最终的真实尺寸
    CGSize textBtnSize = CGSizeMake(textRealSize.width + MJTextPadding * 2, textRealSize.height + MJTextPadding * 2);
原文地址:https://www.cnblogs.com/liuwj/p/6475239.html