繁体   English   中英

为什么 UITableView 零高度单元格会留下空间间隙?

[英]Why do UITableView zero height cells leave space gaps?

我的 Objective-C Catalyst 应用程序有一个表格视图,它以 Groups within Groups 和 Notes and Groups within Groups 的形式显示分层数据。 组有一个披露控件,当切换时“打开”组以显示其内容,或“关闭”组以隐藏其内容。

如下两个屏幕截图所示,问题是当包含多个项目的 Group 被“关闭”时,“关闭”组下方会显示一个明显的垂直间隙空间。 间隙空间的高度与“封闭”组内的项目数成正比。 当“关闭”组切换为“打开”时,间隙空间消失——恢复到正常的单元格间距。 此问题存在于 Catalyst 应用程序的 iOS 和 macOS 版本中。

UITableView 显示显示间隙 UITableView 显示没有间隙

tableView 单元格是样式自定义单元格。 “打开”或“关闭”组的显示是通过根据项目是否可见改变单元格高度来控制的。 如果项目埋在“封闭”组中,则单元格的高度设置为零,否则单元格的高度正常设置。 这是在 tableView 委托中完成的 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
…
…
…

    // Node is hidden if an ancestor is collapsed.
    if ([model isNodeWithinCollapsedAncestor:node]) {
        return 0;
    } else {
        return [super tableView:tableView heightForRowAtIndexPath:indexPath];
    }
}

我尝试了许多修改以试图消除这些差距,但没有成功。 其中包括:

  • 各种 UITableView 属性。
  • 各种 UITableViewCell 属性。
  • 设置 cell.contentView.layoutMargins。
  • 设置 cell.contentView.hidden = YES (更糟糕的差距,因为它为每个隐藏的单元格留下空白)。
  • 不同的单元格约束。
  • 将 Style Custom 单元格替换为 Style Basic 单元格 (由于基本单元仍然有差距,我相信它排除了我的自定义单元的问题。)

似乎没有什么可以阻止间隙空间。 在我看来,零高度单元格有一些剩余高度,可能只有几个点,但我没有成功摆脱空间间隙。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM