iOS之UILabel------分类创建label,计算文本大小
2017-12-24 21:50
651 查看
**********计算文本大小
-(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
-(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
相关文章推荐
- [置顶] UILabel根据文本、字体大小计算label宽度;以及自适应高度
- iOS开发之----根据文本内容和字体大小计算UILabel的size
- iOS根据文本长度动态计算label的大小
- iOS - UILabel 的一些属性设置(间距、删除线等、计算文本label的size等)
- iOS根据字体字号大小和字体label计算label宽度
- 【iOS】UILabel多行文本的高度计算
- iOS --- 根据字符串的实际大小来计算UILabel的size
- IOS开发中UILabel单行、多行文本计算高度、宽度的技巧
- iOS判断沙盒文件,计算文件总量,查看IOS沙盒中文件的属性(修改日期,创建日期,大小等)
- IOS计算UILabel单行高度、计算UILabel多行文本高度、宽度的技巧,根据文本的高度设置cell高度
- IOS开发中UILabel单行、多行文本计算高度、宽度的技巧
- iOS开发动态计算cell高度或UILabel多行文本计算高度、宽度的技巧
- IOS开发中UILabel单行、多行文本计算高度、宽度的技巧
- iOS开发—使用TYAttributedLabel实现字体大小颜色各异并且带链接的文本
- 通过代码创建label 计算最佳尺寸 让其自适应文本高度或宽度
- iOS UILabel根据文本宽度改变字体大小
- iOS Dev (4) 用TTTAttributedLabel创建变化丰富的UILabel
- iOS开 4000 发时关于UILabel文本高度和宽度的计算问题(单行、多行)
- ios-day08-01(模仿QQ聊天界面。ios通知的使用(对键盘状态的监听)、枚举和分类的使用、拉伸图片、计算文本字符串的尺寸