【问题标题】:Autolayout is ignored in Custom UITableViewCell在自定义 UITableViewCell 中忽略自动布局
【发布时间】:2023-04-07 22:47:01
【问题描述】:

尽管对所有元素设置了约束,包括单元格计算高度所需的垂直元素,但自动布局似乎被忽略了:所有单元格都被挤压了。

以下是故事板中结果和约束的屏幕截图:

在持有tableView的VC中,viewDidLoad中的代码如下:

tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension

注释掉第二行会给出高度为 120.0 的单元格,但也会忽略自动布局。


更新

为了简化界面,我留下了一个标签,作为约束:

  • 引领空间到superview
  • 超级视图的顶部空间
  • 固定宽度和高度(100 和 100)
  • 容器边距的底部空间,以确保单元格具有所有垂直约束来确定其高度

在这个简化的界面中,自动布局仍然没有被考虑在内,这暗示我问题不是来自设置不当的约束。

在尺寸检查器中,行高设置为 120 并选中自定义。单元格有正确的自定义类,单元格重用标识符是正确的。

【问题讨论】:

  • 检查您的调试终端 - 那里是否有任何 NSLayoutConstraint 日志表明某些东西没有按预期工作?
  • 调试终端@MatthewHallatt 中没有出现任何内容,谢谢。
  • @Kqtr 尝试注释这两行,然后正常运行一次,检查是否有任何变化?
  • @TusharSharma 注释掉这两行与只注释掉 rowHeight 行的效果相同:单元格的高度为 120.0,但自动布局不起作用。
  • 界面生成器是否将任何约束显示为缺失或不明确?检查是否有黄色或红色的小感叹号。

标签: ios swift uitableview


【解决方案1】:

自动布局被忽略,因为原型单元格和单元格的 UIView 都在 IB 中被赋予了自定义单元格类。

将 UIView 设置回 UIView 类解决了这个问题。

【讨论】:

  • 即使没有 Content View 的自定义类,我也遇到了这个问题,还有其他人遇到过这个吗?
  • @Destiny Faith 你解决了这个问题吗?
  • @Arjun 在 UITableViewCell 的属性窗格中,检查样式​​下拉菜单。如果它不在自定义上,它将迫使您坚持使用与所选内置样式一起使用的 ui 元素。这很可能是您的问题
  • 你是我的英雄。
  • 在最终如此微不足道的小修复上花费了太多时间。为什么会这样?
【解决方案2】:

我认为问题在于您正在实施:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: 
IndexPath) -> CGFloat {

 return x
}

您需要删除此功能,以便表格视图自动计算单元格的高度。

【讨论】:

  • 谢谢,很遗憾我没有覆盖它:实际上我什至没有这个 tableView 的委托,只有一个数据源。
  • 您是否将 textview 约束设置为单元格的所有 for 边缘?你是否禁用了 textView 的滚动?
  • 多行标签(0 行)具有以下限制:1)垂直间距及其左侧的数字 2)顶部空间到 superview 3)尾随空间到 superview 和 4)底部空间与 Asked按标签。
猜你喜欢
  • 2017-09-05
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 1970-01-01
相关资源
最近更新 更多