iOS UILabel自定义行间距时获取高度
本文介绍一下自定义行间距的UILabel的高度如何获取,需要借助一下开源的UILabel控件:TTTAttributedLabel
附下载地址 https://github.com/TTTAttributedLabel/TTTAttributedLabel
下载后,添加到工程里面,导入头文件
#import "TTTAttributedLabel.h"
直接上代码
NSString *str = @"UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度,UILabel自定义行间距时获取高度."; //创建tttLabel TTTAttributedLabel *tttLabel = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(30, 55, 300, 100)]; tttLabel.lineBreakMode = NSLineBreakByCharWrapping; tttLabel.lineSpacing = 6;//设置行间距 tttLabel.font = [UIFont systemFontOfSize:12]; tttLabel.numberOfLines = 0; //设置行数为0 [tttLabel setText:str]; tttLabel.textAlignment = NSTextAlignmentLeft; tttLabel.backgroundColor = [UIColor redColor]; [self.view addSubview:tttLabel]; //获取tttLabel的高度 //先通过NSMutableAttributedString设置和上面tttLabel一样的属性,例如行间距,字体 NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:str]; //自定义str和TTTAttributedLabel一样的行间距 NSMutableParagraphStyle *paragrapStyle = [[NSMutableParagraphStyle alloc] init]; [paragrapStyle setLineSpacing:6]; //设置行间距 [attrString addAttribute:NSParagraphStyleAttributeName value:paragrapStyle range:NSMakeRange(0, str.length)]; //设置字体 [attrString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:12] range:NSMakeRange(0, str.length)]; //得到自定义行间距的UILabel的高度 CGFloat height = [TTTAttributedLabel sizeThatFitsAttributedString:attrString withConstraints:CGSizeMake(300, MAXFLOAT) limitedToNumberOfLines:0].height; //重新改变tttLabel的frame高度 CGRect rect = tttLabel.frame; rect.size.height = height; tttLabel.frame = rect;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?