我有一个场景,其中单个 UITableViewCell
有 2 个 UILable
。我可以在其中包含来自服务器的长文本,这会导致两个标签同时成为多行。
我已经实现了自动布局并且
label.numberofline = 0;
tableVieww.estimatedRowHeight = 100.0;
tableVieww.rowHeight = UITableViewAutomaticDimension;
但它只会导致一个标签展开,而不是两个标签都展开。请帮忙。
提前致谢
最佳答案
试试这个:
使用此代码计算行高
注意:ExtraHeight“H”
假设您的单元格高度为 100,并且该单元格中的标签高度为 20,则额外高度将为 80,因为此代码正在根据文本及其大小计算标签的高度。
您要将此代码放在 heightforRowatindexpath 中,这样 cell.label 就无法到达那里,所以只需传递文本并使用Method-2强>
方法 - 1:
-(CGFloat)setRowHeightWithLabel:(UILabel *)lbl withLabelText:(NSString *)lblText withExtraHeight:(CGFloat)H withFont:(CGFloat)fontSize
{
CGFloat totalHeight;
CGFloat lblWidth = lbl.frame.size.width;
CGSize lblTextSize = [lblText boundingRectWithSize:CGSizeMake(lblWidth, MAXFLOAT)
options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:fontSize]} context:nil].size;
if (lblTextSize.height > lbl.frame.size.height) {
totalHeight = (lblTextSize.height+H);
}
else
{
totalHeight = lbl.frame.size.height+H;
}
NSLog(@"+++++++++++++Height - %.2f",totalHeight);
return totalHeight;
}
将此用于 heightforRow 方法
方法 - 2:
-(CGFloat)setRowHeightWithLabelText:(NSString *)lblText withExtraHeight:(CGFloat)H withFont:(CGFloat)fontSize
{
CGFloat totalHeight;
CGFloat lblWidth = 300;
CGSize lblTextSize = [lblText boundingRectWithSize:CGSizeMake(lblWidth, MAXFLOAT)
options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:fontSize]} context:nil].size;
if (lblTextSize.height > 20) {
totalHeight = (lblTextSize.height+H);
}
else
{
totalHeight = 20+H;
}
NSLog(@"+++++++++++++Height - %.2f",totalHeight);
return totalHeight;
}
关于ios - iOS 8 中单个 UITableViewCell 上有 2 个多行标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008857/