iOS tableViewCell自适应高度

cell上面放图片和文字,可以使用cell自身cell自身的属性cell.imageView和cell.textLabel,也可以自己给cell上添加imageView和label。

1.图片自适应高度:根据图片的宽高比例,通过数学比例运算得出图片应该显示的高度,来设置相框的高度

(1)计算图片等比例高度

- (CGFloat)imageScaleHeightWithImage:(NSString *)name

{

UIImage *aImage = [UIImage imageNamed:name];

CGFloat width = aImage.size.width;

CGFloat height = aImage.size.height;

return height / width * [UIScreen mainScreen].bounds.size.width;

}

(2)设置cell上的高度,调用上面方法

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

return [self imageScaleHeightWithImage:@"图片名"];

}

(3)效果图如下:

iOS tableViewCell自适应高度_第1张图片

2.对给定文字来限制他的应该的高度,用这个高度来设置Label的范围

// 计算label的高度                                                                                                -(CGFloat)labelHeightWithText:(NSString *)text font:(UIFont *)font

{

NSDictionary *dic = @{NSFontAttributeName : font};

CGRect rect = [text boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width, 100000) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil];

return rect.size.height;

}

(2)设置cell上的高度,调用上面方法。 注意设置cell.textLabel多行显示。

iOS tableViewCell自适应高度_第2张图片

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

cell.textLabel.text = @“自定义文本”; //例如:@“刚刚,就刚刚。我们厂里那个16岁的女孩子嚣张的找我说。要我退出我的婚姻,我跟我老公不合适,说我人老珠黄。她说他爱我老公,感觉我老公也喜欢他,我儿子她会视如己出,要我乖乖的立马走人,不要让她爱的人为难,说完走了,我他妈的气笑了,24岁的我人老珠黄?我最先想到的事竟然是先发糗百”

cell.textLabel.numberOfLines = 0;  

return cell;

}

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

 return [self labelHeightWithText:self.string font:[UIFont systemFontOfSize:19]];

}

你可能感兴趣的:(iOS tableViewCell自适应高度)