**********计算文本大小
//计算文本大小
-(CGSize )caculateTextSizeWithStr:(NSString *)str fontsize:(CGFloat)fontsize width:(CGFloat)width height:(CGFloat)height{
UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 375, 60)];
lbl.text=str;
// 给 显示的文本一个区域
CGSize contentMaxSizes = CGSizeMake(WIDTH, MAXFLOAT);
if(width==0){//已知高计算宽度
contentMaxSizes = CGSizeMake(MAXFLOAT, height);
}
if(height==0){//已知宽度计算高
contentMaxSizes = CGSizeMake(width, MAXFLOAT);
}
// NSFontAttributeName 字体的大小
NSDictionary *attributesDicts = @{NSFontAttributeName:[UIFont systemFontOfSize:fontsize]};
//计算文本实际宽高的时候, 计算的字体大小要和label中设置的字体大小保持一致
// 根据限定的条件, 来计算text 真实的宽高
CGSize contentRealSizes = [lbl.text boundingRectWithSize:contentMaxSizes options:NSStringDrawingUsesLineFragmentOrigin attributes:attributesDicts context:nil].size;
return contentRealSizes;
}
-(void)caculateTextSize{
UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, 375, 60)];
// 方法一
// 给 显示的文本一个区域
CGSize contentMaxSizes = CGSizeMake(300, MAXFLOAT);
// NSFontAttributeName 字体的大小
NSDictionary *attributesDicts = @{NSFontAttributeName:[UIFont systemFontOfSize:15]};
#warning 计算文本实际宽高的时候, 计算的字体大小要和label中设置的字体大小保持一致
// 根据限定的条件, 来计算text 真实的宽高
CGSize contentRealSizes = [lbl.text boundingRectWithSize:contentMaxSizes options:NSStringDrawingUsesLineFragmentOrigin attributes:attributesDicts context:nil].size;
// 方法二
NSDictionary *attributesDict = @{NSFontAttributeName:[UIFont systemFontOfSize:15]};
CGSize contentRealSize =[lbl.text sizeWithAttributes:attributesDict];
//方法三
CGSize size = [lbl.text sizeWithFont:[UIFont boldSystemFontOfSize:15] constrainedToSize:contentMaxSizes lineBreakMode:UILineBreakModeCharacterWrap];
}
#import <UIKit/UIKit.h>
@interface UILabel (LYLabel)
//创建label
+(UILabel *)initLabelWithDict:(NSDictionary *)dict;
//计算label的大小
+(CGSize)caculateLabelSizeWithDict:(NSDictionary *)dict;
@end
#import "UILabel+LYLabel.h"
@implementation UILabel (LYLabel)
+(UILabel *)initLabelWithDict:(NSDictionary *)dict{
UILabel *lbl=[[UILabelalloc]init];
lbl.text=dict[@"title"];
lbl.textColor=dict[@"titleColor"];
lbl.font=dict[@"font"];
// lbl.lineBreakMode =NSLineBreakByCharWrapping;//label的内容超出其大小时,其中lineBreakMode可选值为
// linBreakMode enum{
// NSLineBreakByWordWrapping = 0,//保留整个单词,以空格为边界
// NSLineBreakByCharWrapping,//保留整个字符
// NSLineBreakByClipping,//以边界为止
// NSLineBreakByTruncatingHead,//省略开头,以省略号代替
// NSLineBreakByTruncatingTail,//省略结尾,以省略号代替
// NSLineBreakByTruncatingMiddle//省略中间,以省略号代替
// }
// lbl.adjustsFontSizeToFitWidth =YES;//文本自动根据label大小自动调整字体尺寸
// [lbl sizeToFit];//label适应内容大小
lbl.numberOfLines=0;//多行文本显示
lbl.textAlignment=NSTextAlignmentCenter;//对齐方式
lbl.highlighted=YES;
lbl.highlightedTextColor=[UIColoryellowColor];//高亮时的文本颜色
return lbl;
}
//+(CGSize)caculateLabelSizeWithDict:(NSDictionary *)dict{
// //根据内容计算label的大小
// UIFont *font =[UIFont fontWithName:@"Arial" size:12];
// CGSize size = [dict[@"title"] boundingRectWithSize:<#(CGSize)#> options:<#(NSStringDrawingOptions)#> attributes:<#(nullable NSDictionary<NSAttributedStringKey,id> *)#> context:<#(nullable NSStringDrawingContext *)#>];
//
//
// return size;
//}
调用:
NSDictionary *dict=@{
@"title":@"firstasdfghjklpoiuytrewqazxcvbnmljjjllllllhggg",
@"titleColor":[UIColorgreenColor],
@"font":[UIFontsystemFontOfSize:30weight:UIFontWeightBold]
};
UILabel *lbl=[UILabelinitLabelWithDict:dict];
lbl.frame=CGRectMake(50,50,200, 50);
[self.viewaddSubview:lbl];
@end