自适应UITableView的Cell高度问题

1.自己计算Cell的高度返回:

1>model中计算:

//
//  InfoModel.h
//  OCDemo
//
//  Created by 思 彭 on 16/12/27.
//  Copyright ? 2016年 思 彭. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface InfoModel : NSObject

@property (nonatomic, copy) NSString *uid;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *desc;
@property (nonatomic, copy) NSString *headImage;

@property (nonatomic, assign) CGFloat cellHeight;

- (instancetype)initWithDictionary: (NSDictionary *)dic;

@end
//
//  InfoModel.m
//  OCDemo
//
//  Created by 思 彭 on 16/12/27.
//  Copyright ? 2016年 思 彭. All rights reserved.
//

#import "InfoModel.h"

@implementation InfoModel

- (instancetype)initWithDictionary: (NSDictionary *)dic {

    if (self = [super init]) {

        self.title = dic[@"title"];
        self.headImage = dic[@"img"];
        self.desc = dic[@"desc"];

        CGSize contentSize = [self.desc boundingRectWithSize:CGSizeMake(K_SCREEN_WIDTH - 20, 10000000) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName: [UIFont systemFontOfSize:15]} context:nil].size;
        self.cellHeight = contentSize.height + 74;
    }
    return self;
}

@end

2.自定义CellFrame类存储Cell高度:

//
//  CellFrame.h
//  OCDemo
//
//  Created by 思 彭 on 16/12/28.
//  Copyright ? 2016年 思 彭. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "InfoModel.h"

@interface CellFrame : NSObject

@property (nonatomic, assign) CGRect headImgViewFrame;
@property (nonatomic, assign) CGRect titleLabelFrame;
@property (nonatomic, assign) CGRect contentlabelFrame;
@property (nonatomic, assign) CGFloat cellHeight;

@property (nonatomic, strong) InfoModel *model;

@end
//
//  CellFrame.m
//  OCDemo
//
//  Created by 思 彭 on 16/12/28.
//  Copyright ? 2016年 思 彭. All rights reserved.
//

#import "CellFrame.h"

@implementation CellFrame

- (void)setModel:(InfoModel *)model {

    _model = model;
    _headImgViewFrame = CGRectMake(10, 10, 50, 50);
    CGSize contentSize = [model.desc boundingRectWithSize:CGSizeMake(K_SCREEN_WIDTH - 20, 10000000) options:NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName: [UIFont systemFontOfSize:15]} context:nil].size;
    _titleLabelFrame = CGRectMake(CGRectGetMaxX(_headImgViewFrame) + 10, 10, K_SCREEN_WIDTH - 50 - 20, 30);
    _contentlabelFrame = CGRectMake(10, CGRectGetMaxY(_headImgViewFrame) + 10, K_SCREEN_WIDTH - 20, contentSize.height);
    _cellHeight = CGRectGetMaxY(_contentlabelFrame);
}

@end

2.使用第三方Masonry自使用行高:

很方便,要求自己把约束要设置完全!!!

时间: 2024-10-14 10:31:47

自适应UITableView的Cell高度问题的相关文章

IOS UItableview UIcollectionview cell高度自适应

1.tableviewcell 高度自适应 主要方法: 计算cell高度[cell.contentview systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; // NSLayoutConstraint 使用条件 添加相对约束 ios 7.0 cell 高度计算修改: - (CGFloat)tableView:(UITableView )tableView estimatedHeightForRowAtIndexPath:(NS

iOS8+ UITableView自动计算cell高度并缓存

这篇文章我们来讲一下UITableView的cell自适应高度,以及遇到的问题的解决办法.在看文章之前希望你已经会UITableView的基本使用了. 先奉上这篇文章的demo的Github地址:UITableViewCellHeightDemo.大家可以下载下来和文章配合看. cell高度计算的历史 在iOS8之前,如果UITableViewCell的高度是动态的,如果想要显示正确的话,我们需要在下面这个UITableView的代理方法中,返回每一行的精确高度: - (CGFloat)tabl

转--动态改变UITableView中的Cell高度

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

cell 高度的计算

UITableViewCell高度计算 rowHeight UITableView是我们再熟悉不过的视图了,它的 delegate 和 data source 回调不知写了多少次,也不免遇到 UITableViewCell 高度计算的事.UITableView 询问 cell 高度有两种方式.一种是针对所有 Cell 具有固定高度的情况,通过: 1 self.tableView.rowHeight = 88; 上面的代码指定了一个所有 cell 都是 88 高度的 UITableView,对于定

iOS UITableview的cell自适应

背景:这几天做项目,又遇到了cell的自适应高度问题 首先我们必须要知道UITableViewcell 的代理执行顺序,在iOS7出现了一个代理方法叫:tableView: estimatedHeightForRowAtIndexPath:,首先我们要知道在使用UITableViewcell的时候必须计算cell的高度,那如果cell的内容是动态的呢?这个时候我们就必须动态的返回高度了,这就回到了我们项目中遇到的问题.知道了这一点,接下来我们就必须知道UITableViewde 的代理方法的执行

iOS7中Cell高度 Label高度自适应

? 1 2 3 4 5 6 7 8 9 10 11 12 ?- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{     NSString *str = [_dataArray objectAtIndex:indexPath.row];     UIFont *tfont = [UIFont systemFontOfSize:14.0];     NSDictio

UITableView使用AutoLayout动态计算cell高度

UITableView几乎是每个app都需要用的控件,而cell高度自适应也是我们 需要掌握的,当然cell上面的控件也是有多种表现形式,今天小编讲解的是其中一种比较常见的:Auto Layout with UILabel in UITableViewCell. 话不多说,上教程. 首先我们创建一个Sigle View Application的项目,然后拖上一个UITableView到storyboard中,设置好代理并且设置好约束.约束这里就不做讲解了,可以到AutoLayout详解了 解一下

使用Autolayout实现UITableView的Cell动态布局和高度动态改变

本文翻译自:stackoverflow 有人在stackoverflow上问了一个问题: 如何在UITableViewCell中使用Autolayout来实现Cell的内容和子视图自动计算行高,并且能够保持平滑滚动的? 这个问题得到了300+的支持和450+的收藏,答案得到了730+的支持,很详细的说明了如何在iOS7和iOS8上实现UITableView的动态行高功能,并且这个答案对实现UICollectionView的动态行高也具有参考意义.所以在这里将这个答案翻译了一下,希望对大家有所帮助

cell 高度自适应

在使用 table view 的时侯经常会遇到这样的需求:table view 的 cell 中的内容是动态的,导致在开发的时候不知道一个 cell 的高度具体是多少,所以需要提供一个计算 cell 高度的算法,在每次加载到这个 cell 的时候计算出 cell 真正的高度. 在 iOS 8 之前 没有使用 Autolayout 的情况下,需要实现 table view delegate 的 tableView(tableView: UITableView, heightForRowAtInde