ios - Interface Builder中没有固定高度,约束困境

标签 ios objective-c xcode interface-builder nslayoutconstraint

我尝试创建的屏幕非常简单。我有两个 UIViews 堆叠在一起。顶部的 UIView,topView,高度为 40px,下面的 UIView,botView,占据了屏幕的其余部分。但是,有时 topView 不应该出现,我希望 botView 占据整个屏幕。

我尝试过在两个 View 上设置宽度、前导/尾随空间。然后 topView 获取到顶部布局指南的距离,botView 获取到底部布局指南的距离,然后是 topView 和 botView 之间垂直间距的附加约束。但这导致 xcode 对我大喊大叫,说我没有对其中一个 View 设置高度或 y 约束。当然,我不能设置高度限制,因为我不希望它们中的任何一个都是固定高度。

我确定这里一定有一个优雅的约束解决方案,但我似乎无法弄清楚。想法?

最佳答案

如果 topView 应始终为 40px 高度,则为 topView 的高度添加一个约束。

至于botView,您可以保留当前约束,即其顶部必须与topView 的底部相关联。但是为底部 View 添加另一个约束,其优先级低于 required ,表示它应该距离其父 View 顶部 0px。这样,当您从包含 View 中删除 topView 时,botViewtopView 相关的约束将被删除,因此将满足较低的要求优先级约束。

如果你想将 topView 推回,重新创建 botViewtopView 远距离约束 required优先级。

关于ios - Interface Builder中没有固定高度,约束困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24513755/

相关文章:

ios - 转换任何对象?至 NSD 日期

ios - 如何在 iOS 上通过地址找出导致崩溃的数组的名称?

ios - 类扩展的实现在哪里?

ios - 可以将应用程序发布到 iTunes 连接 Mac OS Mojave 吗?

iphone - IOS 5 SDK 中的 Storyboard 但也针对 IOS 4/3?

ios - NSDate 格式没有显示预期的内容

ios - UIScrollView 缩放到错误的点

ios - 文本字段在 iOS 模拟器上不显示键盘

objective-c - 如何实现 "Refresh"和 "Reload"表(代码重构)

xcode - Xcode的设置第四列的含义是什么?