为啥带有约束的情节提要对象在运行时无法正确显示?

Posted

技术标签:

【中文标题】为啥带有约束的情节提要对象在运行时无法正确显示?【英文标题】:Why storyboard objects with constraints do not display properly at run time?为什么带有约束的情节提要对象在运行时无法正确显示? 【发布时间】:2018-04-04 20:51:58 【问题描述】:

我在自定义 tableView 单元格中添加了两个标签和一个按钮。名为 Value 的标签必须是自调整大小的标签。问题是对象在运行时相互重叠。在过去的几个小时里,我一直在尝试各种限制,但我无法让它正确显示。如果这个问题与其他问题无关,在我得到一些帮助后,我会删除它。

override func viewDidLoad() 
     super.viewDidLoad()

     self.tableView.rowHeight = UITableViewAutomaticDimension
     self.tableView.estimatedRowHeight = 75
   

我添加了以下约束 - 单元格大小为 75

标题标签: 顶部空间:SuperView 13 引导空间到:SuperView:8 宽度:175 身高:21

值标签 顶部空间至:editButton 7 底部空间到:SuperView 12.5 引导空格到:SuperView 0 尾随空格到:editButton 0

编辑按钮 顶部空间:SuperView 13 宽度:48 身高:21 尾随空间到:SuperView 0

Main.storyboard

运行时间

【问题讨论】:

Xcode 是否显示任何约束冲突? 运行时控制台中有任何消息吗? View Debugger 在运行时有任何警告吗? @matt 运行时调试器中没有显示警告或约束冲突。 这很奇怪,我很难相信。在我看来,您似乎没有说出某些事情的真相——也许是关于您的约束,或者也许是关于 View Debugger 告诉您的内容。如果您正确使用 View Debugger,它会准确地告诉您您的约束是什么以及为什么将事物定位在它们所在的位置。这应该足以弄清楚。 例如,当您说约束将其固定在右侧时,为什么左侧的编辑按钮关闭?这是没有意义的,除非存在某种基本的模棱两可或者发生了一些你没有告诉我们的事情。 — 您能否将问题简化为一个非常简单的示例项目(例如,只有一行示例表数据,其中一个单元格显示问题)并将其发布到某个地方? 【参考方案1】:

这是一个简单的修复。转到您的 Storyboard,单击标签并转到 Size Inspector。您应该在底部附近看到 Content Hugging PriorityContent Compression Resistance Priority。根据您的需要编辑这些值。

【讨论】:

您能否建议我应该为每个对象分配哪些值来实现 Content Hugging Priority 和 Content Compression Resistance Priority ?另外,为什么我需要在这个特定的实例中设置它们?谢谢 @bibscy 这些值决定了您希望优先处理的图像。如果某些东西由于占用太多空间而需要压缩,则可以使用它。但是,另一种设置约束的方法是相对于其他按钮 - 在这种情况下可能更容易。 @bibscy 点击您的标签,然后点击底部的添加新约束。然后单击顶部、尾随等上的小箭头并设置值。这些都是相对的。

以上是关于为啥带有约束的情节提要对象在运行时无法正确显示?的主要内容,如果未能解决你的问题,请参考以下文章

当我使用自动布局移动视图时,为啥 XCode 5 没有在情节提要中添加约束

为啥使用情节提要在 UIScrollView 中不显示内容

我在情节提要中的对象没有与代码正确链接

为啥我不能从情节提要的表格单元格中删除标签?

如何以编程方式创建带有约束的视图

Xcode 4 for Dummies:为啥应用程序运行时没有应用情节提要设置?