iOS 程序员

tableview的heightForRowAtIndexPat

2017-03-21  本文已影响490人  CoderLNHui

heightForRowAtIndexPath的调用

estimatedRowHeight预设高度的调用

使用estimatedRowHeight的优缺点

所有cell的高度 -> contentSize.height -> 滚动条长度
1000 * 20 -> contentSize.height -> 滚动条长度
contentSize.height -> 200 * 20 -> 16800

调用实例


@property (nonatomic, strong) NSMutableArray<SHTopic *> *topics;

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return self.topics[indexPath.row].cellHeight;
}


#import <Foundation/Foundation.h>
@interface SHTopic : NSObject

/* 额外增加的属性(并非服务器返回的属性,仅仅是为了提高开发效率) */
/** 根据当前模型计算出来的cell高度 */
@property (nonatomic, assign) CGFloat cellHeight;
@end


@implementation SHTopic

- (CGFloat)cellHeight
{
    // 如果已经计算过,就直接返回
    if (_cellHeight) return _cellHeight;
    
    // 文字的Y值
    _cellHeight += 55;
    
    // 文字的高度
    CGSize textMaxSize = CGSizeMake(SHScreenW - 2 * SHMarin, MAXFLOAT);
    _cellHeight += [self.text boundingRectWithSize:textMaxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15]} context:nil].size.height + SHMarin;
    
    // 工具条
    _cellHeight += 35 + SHMarin;
    
    return _cellHeight;
}
@end
上一篇下一篇

猜你喜欢

热点阅读