我有一个tableview,我想在单元格中显示多行文本。我尝试了下面的代码和高度更改但文本没有中断,第二行没有出现。你对我做错了什么有任何线索吗?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
if (cell == nil)
{
cell = [[UITableViewCell alloc]
initWithStyle: UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSString *myString = [_menuItems objectAtIndex:[indexPath row]];
UILabel *settingsLabel = (UILabel *)[cell viewWithTag:201];
settingsLabel.text = myString;
settingsLabel.lineBreakMode = NSLineBreakByWordWrapping;
settingsLabel.numberOfLines = 0;
[settingsLabel sizeToFit];
return cell;
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *str = [_menuItems objectAtIndex:indexPath.row];
CGSize size = [str sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17] constrainedToSize:CGSizeMake(200, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
NSLog(@"%f",size.height);
return size.height + 10;
}
答案 0 :(得分:0)
要进行快速调试,请设置某些视图的背景颜色,以便准确查看它们的位置。例如,标签有多大?
不要使用sizeToFit
,而是使用sizeThatFits:
,其大小限制在单元格中的可用宽度,并且具有较大的高度(您期望的最大合理高度)。然后,使用该大小设置标签框架。
更好的是,使用自动布局或自动调整大小来指定标签应与单元格一起增长(高度)。然后,当您在heightForRowAtIndexPath:
中设置适当的高度时,标签应自动调整大小以适应整个文本。