在我的表格视图中,我已将自定义单元格设为如下图像
自定义单元格
我的问题是描述文字。描述文本可以包含很多行。文本长度不固定。
如何自动修复单元格的高度和描述文本,以便文本显示在其中..
我使用标签作为描述文字。而且我认为这不是一个好选择。我还应该使用什么呢?
自动调整LAbel大小
输出
答案 0 :(得分:0)
您可以获得文字like described here的大小,现在更改说明的框架UILable
,并相应地更改单元格高度。您可能需要在自定义单元格中应用约束。
答案 1 :(得分:0)
你必须为此做一些事情 第一:您必须使用
更改表格单元格的高度- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *text = [[arrComments objectAtIndex:indexPath.row] valueForKey:json_KEY_Comment];
//THIS IS YOUR DESCRIPTION TEXT
if(text)
{
CGFloat width = 249.0;//WIDTH OF THE DESCRIPTION TEXT
UIFont *font = [UIFont systemFontOfSize:13];//FONT OF THE DESCRIPTION TEXT
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: font}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){width, CGFLOAT_MAX}
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
CGSize size = rect.size;
size.height = ceilf(size.height);
size.width = ceilf(size.width);
return size.height + 40;//HERE size.height IS THE HEIGHT OF THE DESCRIPTION TEXT AND 40 IS
//HEADER TEXT AND IMAGE HEIGHT AND THE PADDING YOU WANT
}
else
{
return [tableView rowHeight];
}
}
第二步:将描述文本的行号设置为0,这样它将自动获取所需行号
第三步:设置THE DESCRIPTION TEXT的自动调整大小
因此当单元格高度发生变化时它将自动增加其高度[注意:如果标签位于单元格内容视图中的另一个视图中,则标签的父级也应该将自动调整设置为此] 谢谢
答案 2 :(得分:0)
您可以使用吹码来获取文本高度的单元格高度 你必须传递一个文本及其字体大小,你将得到结果
-(CGFloat)getHeightOfText:(NSString *)text FontSize:(int)fontSize{
UIFont *font = [UIFont fontWithName:@"Helvetica" size:fontSize];
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: font}];
CGRect rect = [attributedText boundingRectWithSize:(CGSize){300, CGFLOAT_MAX}
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
CGSize size = rect.size;
size.height = ceilf(size.height);
size.width = ceilf(size.width);
NSLog(@"%f",size.height);
return size.height + 50;
}
之后:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return //call above method like [self getHeightOfText:text FontSize:fontSize];
}