开发者社区> 管振纬> 正文

uitableview中自适应的复杂cell构建思路(此方案兼容ios8以下,若仅支持ios8,有更先进的方案,请期待续篇)

简介: 对于普通的cell来说我们一般可以直接根据cell的类型给予一个固定的高度,这种情况下我们控件的布局和展示内容所需要的空间大小对我们来说是预知的,因此可以直接这样实现;而对于某些更高级的需求场景来说(比如cell里展示的是聊天信息之类),我们想要把cell中的信息全部展示,就不能够在heightForRowAtIndexPath的代理方法中返回固定值了。
+关注继续查看

对于普通的cell来说我们一般可以直接根据cell的类型给予一个固定的高度,这种情况下我们控件的布局和展示内容所需要的空间大小对我们来说是预知的,因此可以直接这样实现;而对于某些更高级的需求场景来说(比如cell里展示的是聊天信息之类),我们想要把cell中的信息全部展示,就不能够在heightForRowAtIndexPath的代理方法中返回固定值了。

那么,我们的额外工作步骤分为以下几步:

step1:获取到相应数据内容

step2:根据数据内容,将cell布局

step3:根据cell布局,计算出cell的最终高度

step4:将该高度从heightForRowAtIndexPath中返回。


对于图片来说可以根据图片尺寸反推出所需要的布局高度;对于文字我们需要如下的方法(示例):

 CGSize constraint = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);

 CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

 CGFloat height = MAX(size.height, 44.0f);


通过sizeWithFont的方法计算得到固定宽度文本所占用的高度。


然后在对所有的元素所占用的高度进行简单的数学计算,得到cell的高度并从delegate中返回。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
西门子PLC200的modbus Slave库可以支持广播了
 西门子Micro Win4.0 竟然爆出了一个BUG,本来加密的西门子Modbus Slave库,在我一次偶然的改动下,亮闪闪的代码竟然呈献在我的面前。
520 0
使用 TypeScript 改造构建工具及测试用例
最近的一段时间一直在搞TypeScript,一个巨硬出品、赋予JavaScript语言静态类型和编译的语言。 第一个完全使用TypeScript重构的纯Node.js项目已经上线并稳定运行了。 第二个前后端的项目目前也在重构中,关于前端基于webpack的TypeScript套路之前也有提到过:TypeScript在react项目中的实践。
1505 0
C# 让RichTextBox支持GIF
我只是做了一些简单的测试...有疑问给我发消息把. 使用方法 //获取选择的图形 并且保存出来 private void button2_Click(object sender, EventArgs e)    ...
898 0
浅谈移动端的自适应问题——响应式、rem/em、利用Js动态实现移动端自适应
浅谈移动端的自适应问题——响应式、rem/em、利用Js动态实现移动端自适应 一. 在HTML的头部加入meta标签 在HTML的头部,也就是head标签中增加meta标签,告诉浏览器网页宽度等于设备屏幕宽度,且不进行缩放,代码如下: <meta name="viewport" content=.
2094 0
INTERSPEECH 2017系列 | 语音识别技术之自适应技术
语音识别中的自适应,即针对某一个说话人或者某一domain来优化语音识别系统的识别性能,使得识别系统对他们的性能有一定的提升。本文章主要分享INTERSPEECH2017的自适应技术的最新进展。
5370 0
《高性能Linux服务器构建实战》——1.5节Nginx常用配置实例
本节书摘来自华章社区《高性能Linux服务器构建实战》一书中的第1章,第1.5节Nginx常用配置实例,作者:高俊峰,更多章节内容可以访问云栖社区“华章社区”公众号查看
1117 0
+关注
管振纬
资深移动开发者
300
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载