【问题标题】:Why are these constraints in UITableViewCell ambiguous?为什么 UITableViewCell 中的这些约束不明确?
【发布时间】:2019-03-23 22:02:41
【问题描述】:

我有一个自定义的 UITableViewCell,它看起来像这样:

我得到的警告是:

不等式约束歧义:尾随 >= date.trailing + 16

我在上图中突出显示了约束。

我不明白的是,在添加“someView”(底部的最后一个视图)之前,没有任何警告;添加 without height = 20 约束时,没有警告。但是,一旦添加了高度限制,我就会开始收到警告消息。

我必须添加高度约束,因为没有它,'someView' 的高度不再是 20。

如果有帮助,我正在使用

tableView.rowHeight = UITableView.automaticDimension

决定行高

【问题讨论】:

  • 这不是一个真正的答案,但我建议不要太担心 Xcode 在 Interface Builder 中所说的关于这里是否存在歧义的内容。这并不总是正确的。相反,运行应用程序并查看会发生什么。特别是,运行应用程序并切换到 View Debugger 并查看 it 的内容。如果有歧义,它会大声而清晰地告诉你(感叹号)。如果没有,没问题。
  • @matt 谢谢。你是对的,单元格显示正确。但是,调试器确实会抱怨:Probably at least one of the constraints in the following list is one you don't want. .......... Will attempt to recover by breaking constraint: <NSLayoutConstraint:0x600002d7f660 UILabel:0x7fba44c3ca60'Name Label'.height == 24 (active)>。所以基本上,它消除了 nameLabel 的高度约束。你认为我应该忽略警告(在控制台和 IB 中),因为单元格显示正确吗?
  • 哇,这不是模棱两可。这与模棱两可相反。这是冲突。冲突是真实存在的,您需要对此采取一些措施。 - 顺便说一句,你还是应该照我说的做。在应用程序运行时使用视图调试器。它会非常清楚地告诉您是否有歧义或冲突,这是了解两者的唯一真正好方法。
  • 在您的按钮上设置width 约束。
  • 我看不出与某些视图高度和带有尾随约束的警告有任何关系。一种是垂直的,一种是水平的。这不应该是这样的。它们不会相互冲突。

标签: ios iphone swift uitableview


【解决方案1】:

我在 UITableViewCell 中使用了与您相同的 UI:

具有宽度、高度和纵横比的字段具有以下约束:

所有剩余的`约束如下:

唯一的区别是我猜对Name Label 的高度限制。如果我添加它,那么我会遇到约束冲突问题。删除没有显示任何问题的 UI 也很好。

希望这有助于找出并解决您的问题。

【讨论】:

    【解决方案2】:

    您为动态单元格添加了许多不需要的高度。老实说,我讨厌看到有高度限制的标签,因为 contentSize 会为你设置那个高度。当我遇到布局问题时,我的高级 IOS 开发人员会告诉我将其全部删除并重新开始,哈哈。我会建议这样做,但这将是一个糟糕的答案。在标签/视图中使用占位符文本也是一种不好的做法。出于某种原因,界面生成器讨厌它。只是一些提示。

    您可以在此处下载示例:http://s000.tinyupload.com/index.php?file_id=02066350701605990856

    【讨论】:

    • 你也试过从 textView 中删除纵横比吗?您已经定义了顶部、前导、尾随和底部。
    • 所以您的回答是“删除所有内容并重新开始”?设置高度限制可以提高性能
    • 我认为拥有占位符根本不是问题。我保留默认文本。但是,他可以在故事板的左侧窗格中命名它们。它让生活更轻松。
    • 您对标签上的高度限制是正确的。应该避免它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多