【问题标题】:Added an Autolayout to the UITableViewCell, but I see an unknown phenomenon向 UITableViewCell 添加了 Autolayout,但我看到一个未知现象
【发布时间】:2019-09-13 05:25:03
【问题描述】:

我在 UITableViewCell 中的项目中添加了自动布局,但出现未知错误。

使用 AutoLayout 添加的所有项目都将对齐到左上角。

如果我将自动布局添加到常规标签:

生成结果后:常规标签移动到左上角

其他项目也是如此。

如果我将自动布局添加到 General、Total、Final Label :

没有与约束相关的代码。 UITableviewCell 也没有代码。

在视图控制器中:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "ProcDetailMoreCell", for: indexPath) as! ProcDetailMoreCell

    return cell
}

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

我不知道为什么会这样。请帮我看看为什么会出现这些结果。

【问题讨论】:

  • 发生这种情况时,切换到 Xcode 并打开 View Debugger。有感叹号吗?这些会告诉你在运行时你的约束有什么问题。
  • 没有感叹号。一切都应该完美运行,但我不知道为什么。
  • 添加与 $9999 相同的一般标签约束

标签: ios swift uitableview constraints


【解决方案1】:

你正在做两件相互矛盾的事情。一方面,您在指定单元格的高度:

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

另一方面,General 标签与顶部底部之间存在限制。这意味着如果您给出的高度 (175) 与您设计的高度不同,即使有一点点,约束的总和(一般到顶部,一般高度,一般到底部)和单元格高度(175),运行时将不得不放弃一些约束。这似乎就是正在发生的事情。您应该会在控制台中看到有关此问题的通知。

无论如何,只要删除 General 标签和单元格底部之间的约束,事情应该会好得多。 (您可能还想删除 General 标签和单元格右侧之间的约束。)

【讨论】:

  • 感谢您的回答。删除该函数仍会导致相同的行为。
【解决方案2】:

您可以检查您添加到标签的约束。因为约束具有优先级属性,并且与其他两个项目有关系。 像这样:

所以我建议的第一个问题是,您可以检查一下,或者提供有关此约束的更多信息。 你可以测试一下:

  1. 删除通用标签的所有约束
  2. 只添加两个约束,一个是label.leading = cell.leading with offset,一个是label.top = cell.top with offset
  3. 检查结果是否正确。

给我的提示:如果您不知道为什么某些条件不正确,您可以将它们全部删除并重新添加。也许你会发现错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多