iOS UILable 根据文字的多少来自定义大小

这几天项目比较轻松,笔者就想写一些 简单的iOS 小知识,给初学者提供一些帮助。

根据文字的多少自适应大小,有很多的方法,笔者在这里只写两种笔者用过的两种吧。

第一种 ,根据UILable 来自适应 , 比较简单

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, MAXFLOAT);

//这里先创建一个lab 规定他的最大宽度为320 高度不定;

label.text = @"这是一个测试!!!adsfsaf时发生发勿忘我勿忘我勿忘我勿忘我勿忘我阿阿阿阿阿阿阿阿阿阿阿阿阿啊00000000阿什顿。。。";

//测试数据。

label.numberOfLines = 0; //如果是label的长度不超过1行的时候不应写。这句是自适应多好的用到。

label.font = [UIFont systemFontOfSize:12];

//设置table的字体 

[label sizeToFit];

// 根据文字只适应。

NSLog(@"lab.heaght -------%f",label.frame.size.height);


第2种,根据内容来设计自定义大小

NSString *s = @"这是一个测试!!!adsfsaf时发生发勿忘我勿忘我勿忘我勿忘我勿忘我阿阿阿阿阿阿阿阿阿阿阿阿阿啊00000000阿什顿。。。";

CGSize size = CGSizeMake(320,MAXFLOAT);

//计算实际frame大小,并将label的frame变成实际大小

//CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];//(ios7之前的方法)font 字体大小 ,size 最大的尺寸 UILineBreakModeWordWrap 换行的类型。

CGSize labelsize = [s boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:12]} context:nil].size;//(iOS7 之后的方法)

lable.frame,size = labelsize;





//    typedef enum {

//        UILineBreakModeWordWrap = 0,

//        UILineBreakModeCharacterWrap,

//        UILineBreakModeClip,

//        UILineBreakModeHeadTruncation,

//        UILineBreakModeTailTruncation,

//        UILineBreakModeMiddleTruncation,

//    } UILineBreakMode;

//    UILineBreakModeWordWrap = 0,

//    以单词为单位换行,以单位为单位截断。

//    UILineBreakModeCharacterWrap,

//    以字符为单位换行,以字符为单位截断。

//    UILineBreakModeClip,

//    以单词为单位换行。以字符为单位截断。

//    UILineBreakModeHeadTruncation,

//    以单词为单位换行。如果是单行,则开始部分有省略号。如果是多行,则中间有省略号,省略号后面有4个字符。

//    UILineBreakModeTailTruncation,

//    以单词为单位换行。无论是单行还是多行,都是末尾有省略号。

//    UILineBreakModeMiddleTruncation,

//    以单词为单位换行。无论是单行还是多行,都是中间有省略号,省略号后面只有2个字符。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容