UIView在UINavigationBar下方使用Autolayout

我需要在UINavigationBar (由UINavigationController拥有)下使用Autolayout来挂接一个UIView

这里棘手的是UIView需要成为UIApplicationUIWindow的子视图。

插入的视图需要跟踪导航栏的位置,例如,如果iOS状态栏增长到双倍高度(例如,在绿色的“返callback用”场景中),或者在横向视图中更改高度。

该解决scheme还需要使用透明的UINavigationBar ,其中视图控制器的edgesForExtendedLayout没有设置为None。

您是否尝试使用这个Ray Wanderlich的教程 (部分布局指南 )中介绍的topLayoutGuide ?

你应该能够达到预期的结果 – 而不必计算navBar的高度 – 像这样的东西:

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