使用Autolayout将UIView固定在UINavigationBar下方

3

我需要使用Autolayout将UIView钉在UINavigationBar(由UINavigationController拥有)的正下方。

这里的棘手之处在于 UIView 需要成为 UIApplication 的主要 UIWindow的子视图。

插入的视图需要跟踪导航栏的位置,例如如果iOS状态栏增加到双倍高度(例如在绿色“返回通话”情况下),或者在横向视图中更改高度。

解决方案还需要与透明的UINavigationBar一起使用,在这种情况下,视图控制器的edgesForExtendedLayout没有设置为None。


你最终找到了如何实现这个目标吗? - pommefrite
我从未找到一个完全令我满意的解决方案,它不会对导航栏的当前高度做出任何假设。 - Andrew Ebling
1个回答

0

你尝试过使用 topLayoutGuide 吗?这在 Ray Wanderlich 的教程布局指南部分)中有详细说明。

你应该能够通过类似以下代码的方式实现所需的结果,而无需计算 navBar 的高度:

let views = ["myView": myView, "topLayoutGuide":topLayoutGuide]

let verticalConstraints = NSLayoutConstraint.constraintsWithVisualFormat(
  "V:[topLayoutGuide]-[myView(30)]",
  options: [],
  metrics: nil,
  views: views)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接