iOS tableview自适应高度
2016-09-03 12:47
337 查看
做了一年的ios开发,一直从社区中获取各种帮助,也是时候回报社会写写博客啦,主要是自己初学时遇到的一些问题的总结,希望能帮到大家,第一篇博客,写的不好请轻喷啦。
这里所说的自适应高度都是根据autolayout的约束来自适应高度,没有学过autolayou的同学请先移步学习哦。
tableview的自适应高度分为ios8.0前和ios8.0后
1、ios8.0后
首先说简单的ios8.0后的,苹果已经帮我们做了优化,如果项目不支持ios8.0以前的版本的话两句代码即可搞定。曾经在用过swift上用过没有问题,但是在oc上用有时候不知道为什么会计算的不是自己想要的高度,所以还是比较习惯自己去计算
注意不要去实现heightForRow代理方法即可。
2、ios8.0以前
废话不多说了我就直接上码吧
主要根据cell里面的内容计算cell的高度,用多线程只创建一次cell确保不会占用太多内存,然后设置cell的内容,再实现约束,最后计算高度。
各位可以看着如下demo来看,里面还有一些细节需要注意的
1、RWLabel是用来解决ios6.0版本前的计算不准确的问题(lable的继承类换成RWLabel)
2、注意要把label的行数设置成0行哦
3、要记得勾选label的preferred wi.. 属性更新其大小
我的git上面的demo
这里所说的自适应高度都是根据autolayout的约束来自适应高度,没有学过autolayou的同学请先移步学习哦。
tableview的自适应高度分为ios8.0前和ios8.0后
1、ios8.0后
首先说简单的ios8.0后的,苹果已经帮我们做了优化,如果项目不支持ios8.0以前的版本的话两句代码即可搞定。曾经在用过swift上用过没有问题,但是在oc上用有时候不知道为什么会计算的不是自己想要的高度,所以还是比较习惯自己去计算
self.tableView.estimatedRowHeight=71.0f; self.tableView.rowHeight=UITableViewAutomaticDimension;
注意不要去实现heightForRow代理方法即可。
2、ios8.0以前
废话不多说了我就直接上码吧
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ // 创建可重复使用的Cell static MainCell *sizingCell = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sizingCell = [self.tableView dequeueReusableCellWithIdentifier:reuseID]; if (!sizingCell) { sizingCell = [[[NSBundle mainBundle] loadNibNamed:reuseID owner:self options:nil] lastObject]; } }); //设置cell自控件内容 sizingCell.titleStr = self.titleStr; sizingCell.contentStr=self.contentStr; [sizingCell loadData]; //先让约束实现 sizingCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(tableView.frame), CGRectGetHeight(sizingCell.bounds)); [sizingCell setNeedsLayout]; [sizingCell layoutIfNeeded]; //获取cell的contentView的真实高度,因为分隔线是被加在cell底边和contentView底边,所以要加上1px的高度 CGSize size = [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; return size.height + 1.0f; }
主要根据cell里面的内容计算cell的高度,用多线程只创建一次cell确保不会占用太多内存,然后设置cell的内容,再实现约束,最后计算高度。
各位可以看着如下demo来看,里面还有一些细节需要注意的
1、RWLabel是用来解决ios6.0版本前的计算不准确的问题(lable的继承类换成RWLabel)
2、注意要把label的行数设置成0行哦
3、要记得勾选label的preferred wi.. 属性更新其大小
我的git上面的demo
相关文章推荐
- iOS的 tableView的自适应高度, XML 的 DOM 解析
- iOS 改变TableHeadView的高度,tableView自适应
- iOS 给tableView 每行设置预估行高estimatedRowHeight,达到cell高度的自适应
- [iOS]TableView的Cell高度自适应
- IOS TableView的Cell高度自适应,UILabel自动换行适应
- IOS TableView的Cell高度自适应,UILabel自动换行适应
- IOS tableView自适应高度
- iOS雨笙 lable自适应高度(多用于tableview的自定义cell中)
- IOS TableView的Cell高度自适应,UILabel自动换行适应
- iOS自动布局实现Cell和Tableview高度自适应(SDAutoLayout)
- IOS TableView的Cell高度自适应,UILabel自动换行适应
- IOS TableView的Cell高度自适应,UILabel自动换行适应
- ios TableView的Cell高度自适应,UILabel自动换行适应
- iOS 设置 tableView 代理, 注册 cell, 自适应高度.
- IOS TableView的Cell高度自适应,UILabel自动换行适应 table里控件位置自适应
- IOS TableView的Cell高度自适应,UILabel自动换行适应
- IOS TableView的Cell高度自适应,UILabel自动换行适应(转载)
- IOS TableView的Cell高度自适应,UILabel自动换行适应
- IOS TableView的Cell高度自适应,UILabel自动换行适应
- IOS TableView的Cell高度自适应,UILabel自动换行适应