【问题标题】:UITableViewCell broken after you put a UITableView Inside将 UITableView 放入内部后 UITableViewCell 损坏
【发布时间】:2021-06-03 04:55:38
【问题描述】:

我想在UITableView 中创建UITableView。我设计了故事板并设置了所需的自动布局。当我在UITableViewCell 的单元格行高上检查automatic 时。无论单元格的高度是多少,它都会调整为 43.5。当我删除UITableView 时,它会恢复正常。检查下面的 GIF。

预期输出UITableViewCell 高度是指约束。

编辑:我在 Xcode 12.0.1

中做到了这一点

【问题讨论】:

  • 如果单元格内的所有组件(子视图)都有自己的隐式内在内容大小,或者您已对它们设置了高度约束并且您已设置了足够的自动布局约束,则自动单元格高度有效这样iOS可以使用约束和子视图的内在内容大小来评估单元格的大小,但是一旦您将tableView作为子视图引入,tableView就会继承自scrollView,并且通常滚动视图子类没有内在内容大小他们自己的,他们依靠你来提供一些
  • 通过应用高度约束或通过向父视图提供大小来限制其大小的大小信息类型,并且因为您尚未将任何高度约束添加到tableView,只要将其作为子视图添加到单元格,iOS 不知道单元格本身的大小,因此会退回到原始大小 43.5 :) 希望有所帮助
  • 但是如果我添加类似 UIImageView 的东西,它就不会回到 43.5。即使我只是放了它(一个还没有约束的新视图),我也像上面的表格视图一样对待它。 UIImageView 是没有内在大小的东西,除非我们在里面设置图像。

标签: swift xcode uitableview


【解决方案1】:

不建议在表格视图单元格中嵌入表格视图。当用户滚动单元格并且内部会有另一个表格视图同时显示两个表格视图时,请考虑一下您的应用程序的用户体验。您将在同一触摸屏幕时获得两个垂直滚动。

您可以使用带有部分(表示您的单元格)和部分内的行(表示单元格内的表视图)的一个表格视图来获得相同的功能。

【讨论】:

  • 但是我们可以制作subTableView.isScrollEnabled = false并根据其内容设置表格视图高度,然后单元格将根据该子表格视图调整大小。我试过了,但结果从来都不是最优的。我认为最好的做法是不要在表格视图中嵌入表格视图。
猜你喜欢
  • 2023-04-02
  • 2015-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 2014-01-07
  • 2011-08-21
  • 2011-08-08
相关资源
最近更新 更多