【问题标题】:Auto layout fails in UITableViewCellUITableViewCell 中的自动布局失败
【发布时间】:2018-06-27 07:47:17
【问题描述】:

我的约束在 UITableViewCell 中不起作用,但如果我在设备之间切换并进行旋转,则没有警告并且布局在界面生成器中起作用。

我做了什么:

我创建了一个名为 SearchResultCell 的 UITableViewCell。我想在右侧布局一个按钮,在左侧布局两个标签,标签应该水平填充整个空间,直到按钮。

最初,我只是将视图放在那里 - 无论我定义了哪些约束 - 在模拟器中,所有视图总是出现在左上角。

然后我尝试将它们嵌入到堆栈视图中。这两个标签进入一个垂直堆栈视图,然后我将其与按钮一起放入一个水平堆栈视图。然后我定义了约束,使得最外面的堆栈视图应该填充整个超级视图,即我将底部、尾随、顶部和前导约束设置为 0。

My constraints

同样,在界面生成器中它始终正确显示:

Layout works correctly in interface builder

但是,一旦启动,这些限制似乎并没有被应用。

How it looks like in simulator

唯一的(轻微的)改进是现在按钮位于标签旁边,这要归功于堆栈视图。但无论我尝试什么,我都无法在这个 UITableViewCell 中得到约束。

我在这里做错了什么?没看到。

【问题讨论】:

  • 听起来您正在做您需要做的事情...您确定您在 cellForRowAt 中引用了正确的单元格类吗?
  • 我正在使用带有正确标识符的 dequeueReusableCell。
  • 看看:stackoverflow.com/questions/18746929/…。它对使用动态(自定大小)单元格有非常详细的答案。
  • 我读过那篇文章。幸运的是,我不需要自行调整大小的单元格,因为我的表格视图中的所有单元格都将具有相同的布局,因此具有相同的行高。另一个关键点是:“不要将子视图固定到单元格本身;只固定到单元格的 contentView” - 这正是我所做的,我验证了它。所以我能做的最后一件事是遵循“在代码中设置约束”的建议,我也通过覆盖 updateConstraints() 来做到这一点,但行为仍然没有改变。我无法让堆栈视图填充我的 UITableViewCell 的整个内容视图。

标签: xcode uitableview autolayout constraints


【解决方案1】:

做了很多更多的挖掘,终于发现了这个 - 事实上,这也是我的问题:Autolayout is ignored in Custom UITableViewCell

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多