UITableView的动态获取高度 排版
大神请绕路~~~
最近做一款应用的界面,页面是图片,文字,头像,地址,时间等随机排列组成的。
这里简单记录,解决文字单独排版的解决方法,看了网上很多大神的博客分享内容。
刚开始,使用了最常见的方法:
在 cellForRowAtIndexPath 里面 赋值文字显示,
在 heightForRowAtIndexPath 里面使用Category如下:
- (CGSize)boundingRectWithSize:(CGSize)size
{
NSDictionary *attribute = @{NSFontAttributeName: self.font};
CGSize retSize = [self.text boundingRectWithSize:size
options:\
NSStringDrawingTruncatesLastVisibleLine |
NSStringDrawingUsesLineFragmentOrigin |
NSStringDrawingUsesFontLeading
attributes:attribute
context:nil].size;
return retSize;
}
计算出这段文字的高度,加上cell上其他图片之类的高度,返回高度值。
应为cell上面的label是约束搞得 ,所以改变了cell得高度,label高度自然改变。
后来,设计师要求更改文字行间距,查询N久,解决方法如下:
NSString *cntentText = @“水电费水电费的说法”;
if (cntentText) {
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:cntentText];;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
[paragraphStyle setLineSpacing:15];//行间距
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, cntentText.length)];
cell.concentText.attributedText = attributedString;
}
之后需要在 heightForRowAtIndexPath 中计算加了行间距此段文字的高度:
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:detailContent];;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
[paragraphStyle setLineSpacing:15];//和上面对应
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, detailContent.length)];
cell.concentText.attributedText = attributedString;
CGSize size1 = CGSizeMake(kDECEIVE_WIDTH - 16 - 16, 5000);
CGSize labelSize = [cell.concentText sizeThatFits:size1];
return labelSize.height + 20;//加上其他内容占据的空间大小返回
暂时解决,会继续想其他办法看能否简化下,可以需要支持iOS7,不能使用iOS8的cell自适应大小。
继续搬砖解决字间距段间距的问题。
转载于:https://www.cnblogs.com/iOS-xiao-lei/p/4466225.html
UITableView的动态获取高度 排版相关推荐
- uniapp中自定义导航栏动态获取高度
<template><view class="coutainer"><!-- 自定义导航栏空行 --><view class=" ...
- 动态改变UITableView中的Cell高度
往往在开发iPhone的应用过程中用得最多的应该算是UITableVIew了,凭着IOS给UITableView赋予了这种灵活的框架结构,让它不管在显示列表方面还是在排版方面都有着一定的优势.虽然UI ...
- React结合虚拟列表VirtualList的动态获取列表项高度问题
React结合虚拟列表VirtualList的动态获取列表项高度问题: 问题场景:页面查询大量数据的时候结合VirtualList也就是虚拟列表: 例如:手机通讯录查询联系人结合虚拟列表 问题描述: ...
- 微信小程序获取页面元素高度_微信小程序之动态获取元素宽高
我以前一直以为微信小程序不能动态获取view元素的宽高.但是自从看到: wx.createSelectorQuery() 这个api接口,以前的某些问题就能得到解决了... 那么,这个api接口怎么用 ...
- vue mixins(vue3 hooks)动态获取div高度
之前转载过一篇文章: https://blog.csdn.net/qq_37167049/article/details/103084927 可以动态计算div 高度,但是比较繁琐的痛点是: 需要在每 ...
- JS动态获取DIV的宽度和高度px!
JS动态获取div的宽度: var o = document.getElementById("div"); var width= o.clientWidth||o.offsetWi ...
- 动态获取并设置 iframe 自适应高度
实际需求:页面中有一些固定元素 + 内嵌 iframe 页面,此时如果给 iframe 设置固定高度会导致 iframe 内部滚动,体验不佳. 于是需要动态获取 iframe 实际高度并设置,但有些 ...
- ios动态获取UILabel的高度和宽度
在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法. 1.获取宽度,获取字符串不折行单行显示时所需要的长度 CGSize titleSize = [aSt ...
- UITableViewHeader 动态调整高度
首先,标题党一枚,UITableViewHeader 是没有办法动态调整 But,我们可以通过重新赋值 Header 来达到动态调整的效果 示例 需求:header包含一个动态文本标签,具体内容多少可 ...
最新文章
- 熊猫烧香源代码(转载)
- linux无盘windows系统,Linux无盘启动Win2000终端
- CentOS7下安装zookeeper3.4.9
- 215. 数组中的第K个最大元素 golang
- mysql 清空表的两种方法
- Python之函数的参数
- Python 基础总结 6 张图 带你学习Python
- XmlReader 内部使用NameTable
- UVA 11504 Dominos 强连通分量
- 小米台灯底座接口很松_小米新品,米家充电台灯,续航40小时,不足百元,米粉:买买买...
- 统计通话次数和时间的软件_通话时间统计app下载-通话时间统计v2.5 安卓版-腾牛安卓网...
- 已解决:如何使用IDEA生成java帮助文档java doc?
- Lasergene DNASTAR 8.1.3 特别版 Mac 专业的医学生物综合性序列分析工具
- 怎么在mac下运行映像dmg_如何将Apple Mac OS X系统DMG镜像文件转换成ISO镜像文件呢?...
- DETR目标检测新范式带来的思考
- 整理了一下国外的搜索引擎 名字以及IP地址
- vmware使用桥接模式无法ping通本地和外网的解决方法
- 没错,中国程序员前景一片黑暗
- R语言读取(加载)txt格式数据为dataframe、按照指定字段(数据列)对dataframe进行升序排序(ascending)、返回行索引的位置向量
- 托物言志--在心为志,发言为诗。
热门文章
- Delphi 能不能从Ring 3进入Ring 0
- python_文件处理
- 将数据、代码、栈放入不同的段
- JAVA 编写程序实现如下功能:一个线程进行如下运算1*2+2*3+3*4+……+19*20,而另一个线程则每隔一段时间读取前一个线程的运算结果。
- 【☘️C语言の单链表是否有环问题☘️】
- ${}和#{}的区别
- 【译】On Path Independence
- 从 6 篇顶会论文看「知识图谱」领域最新研究进展 | 解读 代码
- Android Bander设计与实现 - 设计篇
- 关于fullcalendar里显示json格式的events(java)