自动布局:显示与容器相关的内容

Auto Layout: Displaying content relative to container

我在开发 iPhone 应用程序时遇到了一些问题。我在屏幕上有一个 UITableView 并制作了一个模板来说明我想要如何布置。我确保约束得到满足,并且当我的程序编译时,我没有遇到自动布局问题。然而,当我 运行 我的程序在模拟器上时,一些文本没有显示,但我知道它应该在那里。这是 Storyboard:

上的情况

然而,当我在 iPhone 模拟器上 运行 程序时,它看起来是这样的:

我只担心 From DateTo Date 字段没有显示,因为如果我将它们向左移动更多,我最终可以看到它们。此外,我确保 To Date 字段的 Trailing Space to Container Marginby 8 px 所以我真的不明白为什么这两个字段没有显示。任何帮助,将不胜感激。谢谢!

编辑:To Date 约束的图像:

编辑 2:table 视图单元格现在的样子:

您的 "missing" 标签可能太靠右了,超出了屏幕边界。如果您的视图控制器在故事板中比您 运行 时更宽,则可能会发生这种情况。确保您的标签具有 尾随 space 的约束——这将导致它们始终位于屏幕边界内,无论屏幕宽度如何。

另外,使用 Xcode 中的 Debug View Hierarchy 查看这些标签实际结束的位置。

更新:

尝试覆盖 UITableViewCell 子类中的 awakeFromNib 方法:

override func awakeFromNib()
{
    contentView.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
}

很可能是因为尺寸 classes 和不同屏幕尺寸之间的差异,标签没有显示。在您的故事板中,原始视图控制器是方形的。确保将标签固定到您希望它们附加到的单元格的一侧。这将确保它们停留在您希望它们停留的位置。还要确保将实际的 table 视图固定到超级视图,以便您可以看到标签。我一直固定在顶部、底部和两侧,以适应不同的屏幕尺寸和旋转。您可能需要更改其他尺寸 classes 的约束。这可能会使一些东西看起来在较小的屏幕尺寸下有点聚在一起,但您始终可以更改单元格的字体或格式以适合所有内容。

如果您想更改另一个尺寸 class 的约束,只需 select 故事板底部的那个尺寸 class 即可。 Select 标签,然后在大小检查器中,您可以设置您不希望无法使用的约束,并连接一些其他约束以使其工作。 Ray Wenderlich 的网站有一个关于大小 classes 和自适应布局的很棒的教程。你可以找到它 here.

编码愉快!!