IOS7环境实现自动计算TableViewCell高度的方法
来源:互联网 发布:linux新建文件命令 vi 编辑:程序博客网 时间:2024/05/20 21:24
本文转载于:IOS7环境实现自动计算TableViewCell高度的方法
IOS8的Self Sizing Cells特性大家都很眼馋,这个特性可以省去繁琐的计算Cell高度的代码。可惜只要还需要兼容IOS7等之前的版本,就没法用。我根据Autolayout的原理,推测IOS7也是可以实现这一功能的。
Autolayout规则:view的frame受约束的控制。约束可以直接影响自身的frame,也可以影响其他View的frame。
我的推测:subView与superView的某条边有强约束(固定值的约束),当superView本身对这条边没有设置约束,会以subView的约束为准。
试验:
1、自定义一个Cell,拖一个label。设置cell的上下边与Cell.contentView间距0,其他约束随意。这样,lable对Cell的高度有了一个强约束。设置label的行数为0,高度不设。
2、感谢网友提醒,这里如果是iOS7,还是需要设置Cell的高度,不过可以非常简化,具体做法如下:
a、在ViewController中创建一个Cell的属性或成员变量,专门用于计算Cell高度。(做这一步是为了性能优化)比如self.tempCell
b、改写计算高度的回调
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ id entity = self.dataSourceArray[indexPath.row]; if (self.tempCell == nil) { self.tempCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; } self.tempCell.bounds = CGRectMake(0, 0, CGRectGetWidth(self.tableView.bounds), CGRectGetHeight(self.tempCell.bounds) ); [self.tempCell resetCellWithEntity:entity]; CGFloat height = [self.tempCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; return height > 44 ? height : 44;}
self.tempCell.bounds = xxxxxx
写这行是因为tempCell创建出来后,默认宽度不一定符合实际情况。
c、在tempCell的resetCellWithEntity:方法中,加入类似这样的代码:
self.testLable.preferredMaxLayoutWidth = self.frame.size.width;
这是因为UILable根据preferredMaxLayoutWidth的值计算高度。默认不设置,表示由系统自动计算。但自动计算仅在iOS8以后有效。iOS7的话,还是需要手动设置的。
3、设置一个数据源,一个NSString的数组,放入长短不同的String进行测试,可以发现显示正常。
- IOS7环境实现自动计算TableViewCell高度的方法
- 自动计算tableviewcell的高度
- tableViewCell高度计算,自动计算 or 手动计算
- 改变tableViewCell高度的方法
- 实现动态高度的TableViewCell
- 四种方法实现UITableView的cell高度自动计算
- IOS7,IOS8 环境下UITextView的ContentSize高度计算
- 优化TableViewCell高度计算的问题
- 计算tableviewcell高度
- tableViewcell自动调整高度
- tableViewCell根据内容自适应高度的方法
- TableViewCell高度自适应的实现方案
- IOS7中动态计算UILable的高度
- iOS7计算UILabel中字符串的高度
- 关于TableViewCell的高度根据text来计算
- 自适应tableViewCell的高度
- TableViewCell高度的自适应
- IOS7中动态计算label的宽度和高度的方法
- Android Dialog 记录
- 可变数组用法
- [前端]防止xss攻击的最简单方法
- ADB介绍及命令
- 搜狐 发奖金
- IOS7环境实现自动计算TableViewCell高度的方法
- 加菲的iOS笔记(03):数据存储(待续)
- 一个故事告诉你什么是分级基金
- Sqoop安装配置
- 关于《pyhton+深度学习》非常好的一篇博客
- 素数密度
- SOJ 4482 忽悠大神【最小生成树】
- 这是我的第一篇博客
- 使用一个环境的或者半径异样消除器来进行异样消除