UITableCell 高度未正确调整

Posted

技术标签:

【中文标题】UITableCell 高度未正确调整【英文标题】:UITableCell Height not adjusting properly 【发布时间】:2013-07-31 03:46:39 【问题描述】:

我有一个 UITableView 列出了某个项目的详细信息。有些细节需要不止一行才能正常显示。

我正在使用此代码来动态调整单元格的大小:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    if (indexPath.section == 1) return 320;

    CGSize maxSize = CGSizeMake(280, MAXFLOAT);
    CGSize cellSize = [[[appDelegate.callList objectAtIndex:callID] objectAtIndex:indexPath.row+1]
                       sizeWithFont:[UIFont systemFontOfSize:17]
                       constrainedToSize:maxSize
                       lineBreakMode:NSLineBreakByWordWrapping];
    return cellSize.height+10;

这是一个具有右细节样式的单元格。没有其他的。详细文本标签为 17 号字体。

使用此代码,我得到的单元格切断了下面的单元格:

我知道我显然可以在最后增加 +10,但这样我的单元格就太大了,我不喜欢。

任何帮助表示赞赏!

编辑

我找到了问题。 maxSize 中设置的宽度太大。

有没有什么方法可以在不事先手动输入的情况下找出当前的详细标签?

【问题讨论】:

appDelegate.callList 中的文本是大写的,还是cellForRowAtIndexPath: 中的文本是大写的?另外,您是否测量了正确细节的宽度以确保 280 是正确的?对我来说,它看起来可能比那个小一点。 文字原样。没有做外壳。我没有测量 280,那只是一个随机数,似乎可以工作哈哈。 在这个链接里看我的回答***.com/questions/17961951/… @AKrush95 无法找到当前的 detailLabel 大小(因为在此方法中,尚未创建单元格。)您可以创建自己的 UITableView 子类并将其设置为您想要的任何内容。 【参考方案1】:

请参考以下链接,它是 Xcode 中动态高度 UITableView 单元格的示例:它可能会对您有所帮助。

http://samrayner.com/posts/dynamic-tableview-cells/

【讨论】:

【参考方案2】:

你可以使用

CGSize maximumSize = CGSizeMake(300, 9999); NSString *myString = @"这是一个长字符串,可以换行"; UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14]; CGSize myStringSize = [myString sizeWithFont:myFont constraintToSize:maximumSize lineBreakMode:self.myLabel.lineBreakMode];

计算 givin NSString 的显示大小。因此,您可以根据上面的代码更改单元格的高度。此外,您应该在某些单元格的高度更改后重新加载您的表格视图。

【讨论】:

这不是和我使用的代码几乎一模一样吗?似乎只有 detailtextlabel 的高度增加了,而不是整个标签

以上是关于UITableCell 高度未正确调整的主要内容,如果未能解决你的问题,请参考以下文章

UITableCell 中的 UILabel 大小不正确,直到 UITableView 滚动

UITableCell 相关

UITable Cell 在单元格中有 UITextView 时无法选择

Google Ads MediaView在显示图片时未正确调整高度以适应wrap_content

UITableCell 按钮 touchUpInside 与单元格的索引谁的按钮被点击

UITable 单元格的不同视图