这就是我现在制作的!我是iOS开发的新手。
我想要的是像Facebook这样的新闻源(cardViewUI),但根据我的单元格设计,当文本长度超过标签容量(单元格的文本容器)时,它会显示“..”,如上所示
所以我想通过文本长度动态设置增加单元格的高度。
我用mainstoryboard而不是.xib文件设计它。我尝试[标签sizeToFit]并将标签的行设置为0但到目前为止没有任何作用。
答案 0 :(得分:1)
您可以按如下方式计算文字高度,
//Height For Row at index path
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = [NSString stringWithFormat:@"%@",[arrFullChat[indexPath.row]objectAtIndex:1]];
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
NSAttributedString *attributedText =
[[NSAttributedString alloc]
initWithString:cellText
attributes:@
{
NSFontAttributeName: cellFont
}];
CGRect rect = [attributedText boundingRectWithSize:CGSizeMake(tableView.bounds.size.width - 90.0, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
return rect.size.height + 42;
}
此代码中的<42>将因您而异。尝试使用不同的值。
请勿忘记使用Autolayout或您想要的任何其他方式根据UITextView
身高增加Cell
身高。
答案 1 :(得分:1)
使用tableView:heightForRowAtIndexPath:
,您可以在运行时给出每行的大小。现在你的问题是如何从你的字符串中获取高度,NSString类中的函数就是这个代码你的问题,
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *str = [dataSourceArray objectAtIndex:indexPath.row];
CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17] constrainedToSize:CGSizeMake(280, 999) lineBreakMode:NSLineBreakByWordWrapping];
NSLog(@"%f",size.height);
return size.height + 10;
}
通过以下行设置标签s num. of line to max. so set it in
cellForRowAtIndexPath:`method。
cell.textLabel.numberOfLines = 0;
如果您使用某个自定义单元格,则使用此管理所有标签的字符串 并获得所有高度的总和,然后设置单元格的高度。