iOS7上 使用autolayout让Cell自动调整高度

如果是iOS8, 那么在storyboard中对cell添加好约束之后只需要再添加两句代码就能让cell自动调整高度

1     self.tableView.estimatedRowHeight = 非0;
2     self.tableView.rowHeight = UITableViewAutomaticDimension;

但是现在大多数应用都还是需要支持iOS7的, 所以在以上基础上, 再在tableView的代理方法中添加以下即可解决, 在这之前别忘了添加一个属性

@property (strong, nonatomic) sdTableViewCell *ccll;

并初始化

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    _ccll = [self.tableView dequeueReusableCellWithIdentifier:@"cc"];
  self.tableView.estimatedRowHeight = 非0;
  self.tableView.rowHeight = UITableViewAutomaticDimension;
}

代理方法中:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    sdTableViewCell *cell = (sdTableViewCell *)_ccll;
    cell.label.text = arr[indexPath.row];

    [cell setNeedsUpdateConstraints];
    [cell updateConstraintsIfNeeded];

    cell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(tableView.bounds), CGRectGetHeight(cell.bounds));
    [cell setNeedsLayout];
    [cell layoutIfNeeded];

    CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
    NSLog(@"hei%f", height);

//加上分割线的1,不然会差一点
    return height + 1;
}

运行, 就能根据内容自动调整高度了

时间: 2024-10-06 00:07:41

iOS7上 使用autolayout让Cell自动调整高度的相关文章

iOS7上TableViewCell的button和UIImageView个别未显示的bug

要做这个cell,用xib将cell做成之后,在iPhone6.6Plus.5s上运行良好,但是在iOS7的5s和iPad上,黄色的小星星和下载按钮均没有显示. 甚为惊奇. 在网上百度之,发现了解决办法: -(void)layoutSubviews{ [super layoutSubviews]; self.contentView.frame = self.bounds; } 重写cell的这个方法即可. 个人认为是iOS7上的AutoLayout在显示时,对cell的frame计算方式和其他系

iOS 8 Tableview根据AutoLayout自动调整高度

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 前言:在iOS 8之前,如果要让Tableview根据内容自动调整大小的话,需要动态的去计算每个cell的高度.太尼玛操蛋了.iOS 8之后,可以根据AutoLayout来自动调整高度了,原理很简单. DataSource中选择让iOS自动计算 在Cell中,设定能够让iOS计算出高度的AutoLayout,注意,这里一定要是能够计算出高度的AutoLayout,这和传统的不一样. 效果 完整过程 新建一个基于sing

自动调整cell的高度

动态改变UITableView中的Cell高度(转载)     往往在开发iPhone的应用过程中用得最多的应该算是UITableVIew了,凭着IOS给UITableView赋予了这种灵活的框架结构,让它不 管在显示列表方面还是在排版方面都有着一定的优势.虽然UITableView功能强大,但是对于一些复杂的应用需求在开发的过程中会出现一些问题,如动 态改变UITableView显示的Cell高度就是其中之一 其实想要改变UITableView的Cell高度并不难,UITableView带有一

iOS不得姐项目--精华模块上拉下拉的注意事项,日期显示,重构子控制器,计算cell的高度(只计算一次),图片帖子的显示

一.上拉下拉注意事项 使用MJRefresh中的上拉控件自动设置透明 当请求下页数据通过page的时候,注意的是上拉加载更多数据失败的问题,下拉加载数据失败了,页数应该还原.或者是请求成功的时候再将页数修改 二.帖子中的日期显示问题(操作日期的两个类的使用) 期望达到的效果:如图 <1>NSDate -- 需要通过NSDateFormatter(日期格式类)将日期转换成相同的格式,才能相互运算,计算出来的时间间隔是以秒数来呈现的. <2>NSCalendar(日历类) -- 通过当

iOS 8:【转】iOS UITextView 输入内容实时更新 cell 的高度

源地址:http://vit0.com/blog/2014/12/25/ios-textview-in-cell/ 这篇文章介绍了在一个动态数据的 table view 中,cell 根据 text view 内容的输入实时改变 cell 和 table view 的高度.自动计算 cell 高度的功能使用 iOS 8 才支持的自适应 cell,如果你还不知道 iOS 8 自适应 cell,可以参看这篇文章:iOS 8 自适应 Cell 先上图,我们最终要实现的效果是这样的: 图 1:实时更新

iOS UITextView 输入内容实时更新cell的高度

先上图,我们最终要实现的效果是这样的:可参考(http://www.cocoachina.com/ios/20141226/10778.html) 图 1:实时更新 cell 高度 实现上面效果的基本原理是: 在 cell 中设置好 text view 的 autolayout,让 cell 可以根据内容自适应大小 text view 中输入内容,根据内容更新 textView 的高度 调用 tableView 的 beginUpdates 和 endUpdates,重新计算 cell 的高度

TableView cell自适应高度-----xib

1.通过xib创建一个cell,将label进行上左下右,进行适配, self.automaticallyAdjustsScrollViewInsets = NO; self.edgesForExtendedLayout = UIRectEdgeNone;//将原点移动到navigationBar下面去了 tableView.estimatedRowHeight = 37.0;//估计cell的高度 tableView.rowHeight = UITableViewAutomaticDimens

iOS8 UITableView动态加载cell的高度

iOS8 UITableView动态加载cell的高度 iOS8新特性,ios8以后,你在也不需要根据cell上内容的不一样计算每个cell的高度了,因为系统可以自己加载它的高度.下面是具体的实现代码: @interface ViewController ()<UITableViewDataSource,UITableViewDelegate> // 数据源 @property (nonatomic, strong) NSMutableArray *dataArray; @end @imple

第?一讲:UITableView 高级 自定义cell , cell自适应高度

一.自定义cell(包括cell的自定义,以及直接赋值的方法) 自定义cell就是创建一个UITableViewCell的子类. 把cell上的控件创建都封装在子类中,简化UIViewController中的代码 示例代码分析:(这个例子包括cell的自定义,以及直接赋值的方法) 1.需要建立tabelViewCell类, 在其中进行cell上控件的添加 2.在tabelViewCell.m中进行初始化,和layoutSubviews的frame布局的操作 tabelViewCell.h定义属性