ios - 隐藏 View 的视觉约束

标签 ios cocoa-touch constraints

我的 iOS 应用中的视觉限制让我有些吃力。

我有四个 UIView。一个始终是“标题”或顶 View ,其他三个轮流在其下方可见,如下所示:

+-------------------+
| HeaderView        |
+-------------------+
| View2|View3|View4 |
+-------------------+

一次只有 View2、View3 或 View4 中的一个可见,其他的在不使用时隐藏。

现在,使用常规的 NSLayoutConstraints,我能够让它很好地工作:

  1. 所有 View 都有前导和尾随边距的约束以匹配主机 super View 。
  2. HeaderView 有 TopMargin 以匹配宿主 super View 。
  3. 所有 View 的高度都有限制。 HeaderView为100,View2、View3、View4分别为25、50、75。
  4. View2、View3 和 View4 都具有将其 Top 设置为等于 HeaderView Bottom 的约束。
  5. (我不关心 View2、View3 或 View4 的任何底部边界——它们的高度是固定的,它们下方的空白空间由其他地方管理。)

因此,我正在尝试将其转换为视觉约束。到目前为止,这是我对水平约束的了解,它很棒:

@"H:|-0-[HeaderView]-0-|"
@"H:|-0-[View2]-0-|"
@"H:|-0-[View3]-0-|"
@"H:|-0-[View4]-0-|"

现在,垂直约束是我遇到麻烦的地方:

我试过以下方法:

@"V:|-0-[HeaderView(100)]-0-[View2(25)]-0-[View3(50)]-0-[View4(75)]"

我也尝试过将其拆分:

@"V:|-0-[HeaderView(100)-0-[View2(25)]"
@"V:|-0-[HeaderView(100)-0-[View2(50)]"
@"V:|-0-[HeaderView(100)-0-[View2(75)]"

现在,问题是垂直布局永远不会正确 — View2、View3 或 View4 几乎总是位于 HeaderView 的正上方,而不是下方。

关于如何清理它并修复我的垂直布局有什么建议吗?

最佳答案

这样试试,

 V:[HeaderView(100)]-[View1(25)]
 V:[HeaderView(100)]-[View2(50)]
 V:[HeaderView(100)]-[View3(75)]

并确保您正确设置 constraintsWithVisualFormat 方法的 views 参数。它应该是您正在设置约束的 View super View ,或者它应该是与您的约束相关的 View 。

希望这会有所帮助:)

关于ios - 隐藏 View 的视觉约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37608055/

相关文章:

ios - 为 Collection View 舍入浮点值时出错

objective-c - NSThread 和对象保留计数问题

c# - 如何在不退出循环的情况下处理异常?

Objective-C NSRegularExpressions,查找字符串中数字的第一次出现

iOS自动布局-将位于tableviewcell内的 View 移动到屏幕中央

ios - 警告 : Attempt to present <MyViewController: 0x10c5771a0> on <UINavigationController: 0x10c533da0> whose view is not in the window hierarchy

iphone - MapKit 内存泄漏。不知道为什么

ios - 如何立即移动 CALayer(无动画)

java - 无法捕获 EJB 中的异常

ios - 如何以编程方式将顶部约束更改为布局中的另一个项目