UITableView的Cell自适应高度

发布时间:2024-02-10 19:00

\"UITableView的Cell自适应高度_第1张图片\"
奋斗的郅博

###背景:
在计算cell的实际高度时我们一般是通过计算frame通过拿到最底部一个控件的最大Y值从而得到cell的高度算来算去比较麻烦

其实,iOS8已经提供了直接通过Cell高度自适应的方法了,根本不用计算Cell高度,就可以搞定不等高Cell 这个方法即对系统cell有效 也对通多xib创建的cell有效:

具体实现场景

#import \"TESTTableViewController.h\"
#import \"TESTTableViewCell.h\"
@interface TESTTableViewController ()
@property (nonatomic,strong) NSArray *contentAry;
@end

@implementation TESTTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.tableView.estimatedRowHeight = 100;  //  随便设个不那么离谱的值
    self.tableView.rowHeight = UITableViewAutomaticDimension;
    self.contentAry = @[@\"哈哈哈\",@\"哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈\",@\"啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈\",@\"哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈哈哈哈\"];
}
#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 4;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *ID = @\"cell\";
    
    //利用系统自带cell类型
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];        
    }
    cell.textLabel.numberOfLines = 0;
    cell.textLabel.text = self.contentAry[indexPath.row];
   return cell;
    
}
@end
\"UITableView的Cell自适应高度_第2张图片\"
实现效果图

小结:

设置tableView的估算Cell高度和rowHeight值为自动计算模式(具体实现原理)

self.tableView.estimatedRowHeight = 100;  //  随便设个不那么离谱的值
self.tableView.rowHeight = UITableViewAutomaticDimension;

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号