
方式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(, 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 * , textRealSize.height + MJTextPadding * );