我在弄清楚UINavigationController的实际结构时遇到了一些麻烦。我想约束它,使其视图与顶级控制器视图的首选大小相匹配。
类似的东西:
navController.view.heightAnchor.constraint(equalTo: navController.topViewController?.view.heightAnchor).isActive = true
给我错误:
*** Terminating app due to uncaught exception 'NSGenericException',
reason: 'Unable to activate constraint with anchors
<NSLayoutYAxisAnchor:0x600000472e00 "UILayoutContainerView:0x7f9f01d14310.top">
and <NSLayoutYAxisAnchor:0x608000270ac0 "UIView:0x7f9f01d182b0.top">
because they have no common ancestor. Does the constraint or its anchors
reference items in different view hierarchies? That's illegal.'
显然,顶级控制器的视图位于不同的层次结构中。怎么可能?如何实现创建非全屏UINavigationController的目标?请不要暗示让孩子控制器的下半部分空白或者其他东西。
答案 0 :(得分:0)
如何实现创建非全屏UINavigationController的目标?
两种简单的方法:
将导航控制器显示为呈现的视图控制器并自定义演示文稿。 (顺便提一下,popover就是一个例子:导航控制器 将自己的大小调整为其子级的首选大小。)
制作父视图控制器,并使导航控制器成为子视图。
在这两种方法中,导航控制器的视图大小完全取决于您。