iOS 8自适应高度单元格问题
来源:互联网 发布:高圆圆长相知乎 编辑:程序博客网 时间:2024/04/29 02:15
iOS 8 中通过UITableViewAutomaticDimension 常量支持自适应高度的单元格(iOS 7 就要麻烦得多)。但是在实际应用中,我们需要注意以下几个问题:
1、 设置好模板单元格的自动布局
模板单元格中,subviews的自动局部必须要能够把单元格撑满。也就是说,iOS 必须能够通过内容的自动布局约束计算出 cell 的高。以下面的单元格为例:
cell中有上下两个 Label,上面的Label只有一行文本(lines为1),所以高度在运行时不会改变,但下面的Label是多行文本(lines为0),运行时其高度会根据文本内容自动增长。
左图中的自动布局是正确的,因此运行时单元格能够自适应高度。这是因为iOS能够根据cell的contentView中的各个子View计算出cell的正常高度,计算方式为:
cell 高度 = 第1个Label的top+第1个Label高度+第2个Label的top+第2个Label高度(根据内容自动计算)+第2个Label的bottom
但是当我们将第2个Label的top约束(或者bottom约束)删除,如右图所示,我们已经把图中红框所示位置的约束删除了,则iOS无法计算单元格的高度了。因为上述公式中的一个变量缺失。这样运行时表格中的所有cell都是固定高度,cell之间会发生重叠,同时控制台会报错:
Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell’s content view. We’re considering the collapse unintentional and using standard height instead.
2、 在viewDidLoad中设置tableView
接下来在viewDidLoad中设置tableView:
tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 100;
第一句的作用如前面所述,是开启iOS 8的单元格的自适应高度特性。第二句代码也是同样的功能,estimatedRowHeight让你提供一个预先估计cell的高度值,这个值根本可以乱设(只要不为0),但如果你不写这句,或者将estimatedRowHeight属性设置为0,则iOS 8的单元格自动高度特性也不会生效。
3、 heightForRowAtIndexPath方法和estimatedHeightForRowAtIndexPath方法
开启了iOS 8 的单元格自动高度特性后,这两个方法就不需要了,或者简单地返回一个UITableViewAutomaticDimension常量:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
当然,完全删除这两个方法也没有关系。
- iOS 8自适应高度单元格问题
- iOS UITableViewCell自适应高度单元格问题?
- cell单元格高度自适应
- iOS 8 自适应 Cell高度
- iOS 8cell的高度的自适应
- iOS - UITableViewCell自适应高度
- IOS UITextView自适应高度
- iOS Cell高度自适应
- IOS UITextView自适应高度
- iOS:UITextView自适应高度
- IOS TextView 自适应高度
- IOS Label 自适应高度
- IOS UITextView自适应高度
- IOS文本自适应高度
- ios cell自适应高度
- iOS 自适应label高度
- iOS UITableCell自适应高度
- iOS键盘自适应高度
- 成哥C笔记-动态分配内存
- 深度学习笔记(二)用Torch实现线性回归
- 测试
- SOLR3.x配置mmseg4j分词器
- 算法-排序-插入排序(直接插入和希尔排序)
- iOS 8自适应高度单元格问题
- 十三、买空卖空、融资融券、配资与杠杆
- uwin7下secureCRT SSH2远程登录Ubuntu系统问题解决
- json_encode不支持中文的一个解决方法
- Android design support library---CollapsingAvatarToolbar分析
- mysql将timestamp类型转换成date类型数据
- Mysql百万级数据库优化
- VISIO 里面对随意画的一个封闭面进行填充阴影(尤其斜线阴影)
- 静态分析 - 数据流分析