3 回答
TA贡献1793条经验 获得超6个赞
这是一种更简单的方法,它适用于我:
在你的cellForRowAtIndexPath:功能里面。第一次创建单元格时:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
}
您会注意到我将标签的行数设置为0.这使得它可以根据需要使用尽可能多的行。
下一部分是指定你的大小UITableViewCell,所以在你的heightForRowAtIndexPath函数中这样做:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @"Go get some text for your cell.";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
return labelSize.height + 20;
}
我在返回的单元格高度上添加了20,因为我喜欢在文本周围添加一点缓冲区。
TA贡献1995条经验 获得超2个赞
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.textLabel.numberOfLines = 0;
cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellText = @"Go get some text for your cell.";
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
NSAttributedString *attributedText =
[[NSAttributedString alloc]
initWithString:cellText
attributes:@
{
NSFontAttributeName: cellFont
}];
CGRect rect = [attributedText boundingRectWithSize:CGSizeMake(tableView.bounds.size.width, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
return rect.size.height + 20;
}
TA贡献1818条经验 获得超3个赞
当我遇到同样的问题时,记录我的经验的简短评论/答案。尽管使用了代码示例,但是表视图单元格高度正在调整,但是单元格内的标签仍未正确调整 - 解决方案是我从自定义NIB文件加载我的单元格,这在调整后的单元格高度后发生。
我在NIB文件中设置了不包装文本的设置,标签只有1行; NIB文件设置覆盖了我在代码中调整的设置。
我接受的教训是确保始终牢记物体在每个时间点的状态 - 它们可能尚未创建!......有人下线了。
- 3 回答
- 0 关注
- 601 浏览
添加回答
举报