自动布局:显示相对于容器的内容
Posted
技术标签:
【中文标题】自动布局:显示相对于容器的内容【英文标题】:Auto Layout: Displaying content relative to container 【发布时间】:2015-07-21 23:34:26 【问题描述】:我在开发 iPhone 应用程序时遇到了一些问题。我在屏幕上有一个UITableView
,并为我想如何布置东西制作了一个模板。我确保满足约束,并且当我的程序编译时,我没有遇到自动布局问题。然而,当我在模拟器上运行我的程序时,一些文本没有显示,但我知道它应该在那里。以下是Storyboard
上的情况:
但是,当我在 iPhone 模拟器上运行程序时,情况是这样的:
我只担心From Date
和To Date
字段不显示,因为如果我将它们向左移动更多,我最终可以看到它们。此外,我确保将To Date
字段设为Trailing Space to Container Margin
by 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。有没有等效的地方可以放置该行?以上是关于自动布局:显示相对于容器的内容的主要内容,如果未能解决你的问题,请参考以下文章