想问下,iOS tableviewcell 高度如何跟文字内容高度一样呢? 它自己根据里面的文字或者图片自定义高度?用masonry可以不
http://blog.csdn.net/swingpyzf/article/details/18093959
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell=[self tableView:tableView cellForRowAtIndexPath:indexPath];
return cell.frame.size.height;
}
计算文本高度,cell的高度返回它即可。
我给你一个计算文字高度的方法
/**
* 计算文字显示的大小,支持单行和多行
*
*
* @param String 文字内容
* @param font 文字的字体
* @param maxWidth 文字的最大宽度
* @param maxHeight 文字的最大高度
*
* @return 文字的显示区域,可以单单使用rect的size属性
*/
- (CGRect)getFontSizeWithString:(NSString *)String withFont:(UIFont *)font withMaxWidth:(CGFloat )maxWidth withMaxHeight:(CGFloat )maxHeight
{
CGRect rect = [String boundingRectWithSize:CGSizeMake(maxWidth, maxHeight) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName, nil] context:nil];
return rect;
}
按照你的需求的话,使用这个方法,传入文字内容、文字字体、文字显示的最大宽度、以及 MAXFLOAT
返回的结果就是你所需要的文字的范围矩形,然后获取其中的cgsize,从而得到文字的计算高度。
获取高度以后,就可以使用heightForRowAtIndexPath方法进行高度的设置,
比如:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return [self getFontSizeWithString:@"hello" withFont:[UIFont systemFontOfSize:12] withMaxWidth:SCREEN_WIDTH withMaxHeight:MAXFLOAT].size.height;
}
我是这样做的,你可以试一下
/**
@return 自适应之后label的高度
*/
+(CGFloat)heightWithText:(NSString *)text font:(UIFont *)font width:(CGFloat)width {
//第一步:设置文本显示的范围
//如果计算label的自适应高度,那么宽度需要固定,宽度需要尽量设置大值
CGSize size = CGSizeMake(width, MAXFLOAT);
//第二步:设置要显示的文本样式
NSDictionary *style = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil];
//第三步:根据文本内容和文本样式计算label的frame
/**
//返回自适应之后的高度
return result.size.height;
}