iOS开发: UITableViewCell的自适应高度


1、在cell.h文件下:定义一个Label,用来放cell的内容:

@property(nonatomic, retain)UILabel *countLabel;


2、在cell.m文件下:初始化label:

-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{


    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) {

        [self createViews];

    }

    return self;

}

//为了封装,减少代码冗余,尽量调用自写方法

- (void)createViews{

    

    _countLabel = [[UILabel alloc]init];

    

    [self.contentView addSubview:_countLabel];

    

    [_countLabel release];

}


- (void)layoutSubviews{


    [super layoutSubviews];

    _countLabel.frame = CGRectMake(0, 0, 345, self.contentView.frame.size.height);

    _countLabel.font = [UIFont systemFontOfSize:15];

    _countLabel.numberOfLines = 0;


}

3、 在viewController.m文件中自定义cell的高度(两个协议方法自行实现):

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

 NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:15], NSFontAttributeName, nil];

//自适应cell的高度

(1)、需要一个size:(适度的width( <=375(iPhone6), 其实也无所谓了,最后要的是高度,可能对宽度的影响不会太大。), 尽可能高的height(最高的cgfloat_max))

(2)、option:有四种,一般选择第二个

NSStringDrawingTruncatesLastVisibleLine

    NSStringDrawingUsesLineFragmentOrigin 

    NSStringDrawingUsesFontLeading 

    NSStringDrawingUsesDeviceMetrics  

(3)、需要一个字典:初始化一个字典,可以添加修改字体大小、颜色什么的

        CGRect rect = [_activity.content boundingRectWithSize:CGSizeMake(375, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil];

//重点:返回rect的高度,最重要的是要+1(系统自带bug), 不然会出现打印不全的情况(会出现......);如果说非不想+1,那就参考我上次写的,在定义一个string,把整个内容赋值给string,然后重写setter方法中实现上述cell自适应高度的过程。

        return  rect.size.height + 1;

    }







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值