UILabel
里面的一个UITableViewCell
。在手机点击时,高度会扩大,第二个UILabel
与不同数量的数据一起出现。
问题是,如果换行,sizeWithFont:constrainedToSize:lineBreakMode:
不能返回正确的高度并切断底线。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
labelExpanded = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
labelExpanded.font = [UIFont boldSystemFontOfSize:11];
labelExpanded.textAlignment = UITextAlignmentLeft;
labelExpanded.lineBreakMode = UILineBreakModeWordWrap;
labelExpanded.numberOfLines = 0;
[cell.contentView addSubview:labelExpanded];
CGSize constraint = CGSizeMake(300, 20000);
CGSize size = [expandedDetails sizeWithFont:[UIFont boldSystemFontOfSize:11] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
[labelExpanded setText:expandedDetails];
[labelExpanded setFrame:CGRectMake(16, 30, 248, size.height)];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(// Row is Expanded)
{
CGSize constraint = CGSizeMake(300, 20000);
CGSize size = [sameTextAsLabel sizeWithFont:[UIFont boldSystemFontOfSize:11] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
// I found +8 to height added nice padding
CGFloat height = size.height + 8;
}
else // Row is not expanded
return 30;
}
相同的文本被输入到两者中,它由一个带有多个换行符的字符串组成\n
。如果行长于宽度,自动换行会完成其工作,但在计算其动态高度时,它无法包含换行。
如果我添加任何价值[labelExpanded setFrame:height]
例如[size.height + 30]
我的包裹线出现了。但是,如果该行未换行,则会添加不必要的空格。
我一直无法在网上找到解决方案。
我注意到的一件事是,您是根据宽度 300 计算尺寸,但将标签尺寸调整为 248。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)