UITableViewCell高度动态变化

作者: 小徐是个大肚皮 | 来源:发表于2015-06-24 19:54 被阅读1811次

    自从iOS8开始,UITableView的渲染过程改为先渲染cell再计算其高度height,因此,在DataSource
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    里设置好响应的cell后,其高度可以在UITableView的代理方法
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    通过自定义cell中的类方法来获取。例如:

    @interface CustomTableCell : UITableViewCell+(CGFloat)height;@end
    

    当然,这里面的height是根据cell的一些setter方法来动态计算出来的。
    而在iOS8之前,UITableView的渲染是先计算cell的高度height,再具体渲染cell,因此我们只能在代理方法
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    中先创建cell,然后给cell塞要展示的数据,动态算出cell的高度后,再拿这个高度返回即可。因此,针对iOS8之前的系统,我们要做一些额外的处理:

    if (!isiOS8Later) {
    static CustomCell *cell = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        // 新建cell
        sizingCell = [[[UINib nibWithNibName: CustomCell bundle:nil] instantiateWithOwner:nil options:nil] objectAtIndex:0];
    });
    // 设置cell的数据
    cell.data = data; 
    }
    return [CustomCell height];

    相关文章

      网友评论

        本文标题:UITableViewCell高度动态变化

        本文链接:https://www.haomeiwen.com/subject/kiceqttx.html