我想创建一个自定义容器视图控制器,其行为与半透明标签栏非常相似。在我的故事板中,我有类似的东西:
容器视图中的内容在标签栏按钮视图下展开以获得半透明效果。但是,因为这不是标准的标签栏UIKit
未在子控制器中设置bottomLayoutGuide
,默认情况下为0
。
结果是,当存在滚动视图时,内部子控制器没有正确设置内容上的插入,因此内容的最后几个像素被覆盖通过tababar视图。
我知道我可以制作一个自定义解决方案,我在子视图控制器中手动更改contentInset
,但由于有多个子节点,这将非常麻烦。此外,这个自定义tabbar将动画输入/输出,并且可能具有不同的大小,因此这种方法非常复杂,并且与子控制器的关系非常紧密。 从子级到tabbar布局的大量额外代码和依赖项!
如果我使用标准标签栏,内容将正确显示,因为系统使用bottomLayoutGuide
向内部滚动框添加插入内容。
我想以某种方式使用我的自定义标签栏执行相同的操作,因此无需更改我的子控制器代码中的任何其他内容(并使它们更少依赖于标签栏的内部),因此我可以参考通常,InterfaceBuilder的布局边距,无论哪个是容器视图。
作为额外的好处,这种方法可以让我在动画输入/输出或更改标签栏大小时更改bottomLayoutGuide
,只需要再次询问子视图。
我在tabBar和子控制器的bottomLayoutGuide
上尝试了不同的操作。我尝试过的一些例子是:
bottomLayoutGuide.heightAnchor.constraintEqualToConstant(40)
bottomLayoutGuide.topAnchor.constraintEqualToAnchor(tabBarView.topAnchor)
我还试图打电话给view.setNeedsUpdateConstraints()
以防万一,但无论我做什么bottomLayoutGuide.length
似乎总是返回0.0
。
我也看到视图现在有一个layoutMarginsGuide
,但它似乎不是一回事。
bottomLayoutGuide
始终为0 ?我在这里错过了什么吗?谢谢!