【问题标题】:Set Vertical compression resistance priority to 749 for UITableViewCell将 UITableViewCell 的垂直压缩阻力优先级设置为 749
【发布时间】:2019-02-28 06:01:46
【问题描述】:

我正在制作一个具有以下约束关系的表格视图单元格。

    -----------------
    |                |
    |  ____________  |
    |  |          |  |
    |  |__________|  |
    |                |
    |  ____________  |
    |  |label.    |  |
    |  |__________|  |
    |                |
    |  ____________  |
    |  |          |  |
    |  |__________|  |
    |                |
    |  ____________  |
    |  |label.    |  |
    |  |__________|  |
    |________________|

子视图如下:(视图、标签、视图、标签)。我希望单元格使用两个标签动态调整大小,例如,如果第一个标签变得更高,那么单元格应该相应地变得更高。如果两个标签都变高或变短,则单元格应相应调整大小。这两个视图应该具有恒定的宽度和高度。

如果我从一个标签开始我很好,一个标签和一个视图我很好,一个标签和一个标签,我很好,但是如果我有 2 个标签和一个视图,只要我放最终标签的最后一个约束,自动布局在情节提要中引发错误(运行应用程序时我没有明显的问题)。

问题是我不想改变抗压性,因为我不希望任何一个标签都被挤压,而且我不明白他们为什么会给出提供的约束。

【问题讨论】:

  • 如果您投反对票,请说明原因。我真诚地提出了这个问题。
  • 通过选择您的标签并执行 cmd+sht+ = 为您的标签赋予尺寸以赋予其属性。对于 tableview 单元格...在行的高度中,您可以返回 UITableView.automaticDimension。它将根据约束采用动态高度。
  • "通过选择您的标签并执行 cmd+sht+ = " 为您的标签赋予尺寸以赋予 fir 属性。很抱歉,不理解这一点。
  • 对不起,我的意思是尺寸适合,行数为 0

标签: ios swift uitableview autolayout constraints


【解决方案1】:

将最后一个标签的底部约束修改为具有“大于或等于”关系的常数

你的代码应该是这样的

希望这可行

【讨论】:

  • 哇。为什么这行得通?如何?这似乎接近解决我的问题。但是,这并不能解决我的问题,因为我希望单元格的高度由其内容确定。
  • 你添加的约束是完美的。问题是单元格高度。 xib / Storyboard 中的单元格高度高于预期高度。这就是为什么这种改变奏效的原因。您可以根据您的计算给出高度。然后使用 tableView.rowHeight = UITableViewAutomaticDimension
  • 很抱歉没有让你知道这个“高度比预期的高度”。
【解决方案2】:

您似乎已经正确设置了约束,情节提要上的错误也会显示约束的微小变化,例如 0.5 像素。您可以删除最后一个 UILabel 的底部约束并重新分配,以便可以重新排列冲突的约束。它会解决这个问题。

获取动态单元格大小:

  1. UILabel 的行数设置为0。

  2. 将两个 UILabel 的高度约束关系从 = 更新为 >=

  3. 在您的代码中应用下表委托方法

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

使用UIStackView解决问题:

您可以在堆栈视图中获取所有视图,并将顶部、底部、前导和尾随约束分配给堆栈视图并保留表委托方法,而不是向所有视图添加约束。我认为这将是更合适的方式。

【讨论】:

  • 如果我删除底部标签的底部约束然后重新分配它,仍然会抛出错误。感谢您的尝试,但这并不能解决我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-28
  • 2018-07-08
  • 2017-03-31
  • 1970-01-01
  • 2022-01-23
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多