• 自定义cell 自适应高度


    #pragma mark - 动态计算cell高度

    //计算 返回 文本高度

    + (CGFloat)calsLabelHeightWithContact:(Contacts *)contact

    {

        //size:   文字最大范围

        //options:计算高度 参数

        //  NSStringDrawingUsesLineFragmentOrigin:指定 原点 绘制字符串片段起源和基线。

        //attributes:文字某个属性 通常是大小

        //ios7 获取文本高 方法

        CGRect rect = [contact.introduce boundingRectWithSize:CGSizeMake(280, 2000)

                                                      options:NSStringDrawingUsesLineFragmentOrigin

                                                   attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17.0f] }

                                                      context:nil];

        

        return rect.size.height;

    }

    //重写contact 的setter方法

    - (void)setContact:(Contacts *)contact

    {

        if (_contact != contact) {

            [_contact release];

            _contact = [contact retain];

            

            //将获取到的值赋值到控件上,赋值

            //1,头像

            _headImageView.image = [UIImage imageNamed:contact.headImageName];

            //2,名字

            _nameLabel.text = contact.name;

            //3,电话

            _phoneNumberLabel.text = contact.phoneNumber;

            //4,性别

            _genderLabel.text = contact.gender;

            //5,年龄

            if (contact.age) {

                _ageLabel.text = contact.age;

            }else{

                _ageLabel.hidden = YES;

            }

            

            //6,简介

            _introduceLabel.text = contact.introduce;

            

            //计算高度

            CGFloat height = [BoyTableViewCell calsLabelHeightWithContact:contact];

            

            //修改高度

            CGRect frame = _introduceLabel.frame;

            frame.size.height = height;

            _introduceLabel.frame = frame;

        }

    }

    #pragma mark - 提供类方法,返回模型内容高度

    //使用模型参数,

    + (CGFloat)cellHeightWithContact:(Contacts *)contact

    {

        CGFloat h = [self calsLabelHeightWithContact:contact];

        

        return 140 + h;

    }

    //行高

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

    {

        //1,通过组索引 找出对应的key

        NSString *key = _allKeysMutaArray[indexPath.section];

        //2,通过可以 查出对应分组

        NSMutableArray *array = _allDataMutaDict[key];

        

        //3,通过row 查出 数组对应项

        Contacts *c = array[indexPath.row];

        //计算出模型的高度

        CGFloat h =[BoyTableViewCell cellHeightWithContact:c];

        

        return h;

    }

  • 相关阅读:
    Java8 Lambda表达式详解手册及实例
    spring 到底注入接口还是实现类
    2022/03/31 What is Git?
    2022/03/28 HomeBrew使用说明
    3.24 Go之反射规则
    2022/03/28 Mac环境配置踩坑记录
    2022/03/29 Mac布置项目环境进行包管理
    Windows版:在Grafana上通过Prometheus配置windows仪表板监控
    【Python】实现简单循环
    【Python】将4*4数组旋转90度新数组
  • 原文地址:https://www.cnblogs.com/iOS-mt/p/4187532.html
Copyright © 2020-2023  润新知