自动布局:显示相对于容器的内容

Posted

技术标签:

【中文标题】自动布局:显示相对于容器的内容【英文标题】:Auto Layout: Displaying content relative to container 【发布时间】:2015-07-21 23:34:26 【问题描述】:

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

但是,当我在 iPhone 模拟器上运行程序时,情况是这样的:

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

编辑:To Date 约束的图像:

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

【问题讨论】:

您是否尝试过将日期标签固定到表格视图单元格的右侧? @Douglas 我只是选择了To Date 标签,然后 cntrl + 拖动到屏幕右侧(标记为内容视图),然后我选择了Trailing space to Container Margin 也许您也需要对容器视图执行此操作。似乎容器视图比您的屏幕视图大。 @Douglas 如何查看我的容器视图是否大于我的屏幕视图? @Douglas 是的,我已经得到了要显示的标签。我只需要固定表格视图的宽度/高度,现在一切正常。谢谢你的帮助!我刚刚遇到的另一个问题是,现在事情都搞砸了。我希望它看起来像我发布的第一张图片,但最终看起来像我在原始帖子中制作的最后一张图片。有没有办法解决这个问题? 【参考方案1】:

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

如果您想更改其他尺寸类别的约束,只需在故事板底部选择该尺寸类别即可。选择标签,然后在尺寸检查器中,您可以制作您不希望无法使用的约束,并连接一些其他约束以使其工作。 Ray Wenderlich 的网站上有一个关于尺寸等级和自适应布局的很棒的教程。你可以找到它here。

编码愉快!!

【讨论】:

【参考方案2】:

您的“缺失”标签可能太靠右了,超出了屏幕边界。如果您的视图控制器在情节提要中比您运行它时更宽,则可能会发生这种情况。确保您的标签对尾随空间有限制——无论屏幕宽度如何,这将导致它们始终在屏幕范围内。

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

更新

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

override func awakeFromNib()

    contentView.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight

【讨论】:

嗨,我的标签确实有Trailing Space 的约束,这就是为什么这让我感到困惑。还有其他建议吗? @user1871869 你能张贴你对“迄今为止”标签的所有限制的截图吗?这有助于了解正在发生的事情。 在上面的帖子里!谢谢! 谢谢!您的约束看起来是正确的。查看我的更新答案,如果我的新建议有帮助,请告诉我。 嗨,我很抱歉,但我实际上使用的是 Swift 而不是 Objective C。有没有等效的地方可以放置该行?

以上是关于自动布局:显示相对于容器的内容的主要内容,如果未能解决你的问题,请参考以下文章

IOS开发之自动布局显示网络请求内容

内容视图自动布局

容器控件,对话框控件,流,路径的简单概念

Xcode 自动布局故事板预览不显示容器视图

自动布局粘在底部

170412学习整理