我目前正在开发一个自定义容器控制器。问题是:我如何正确设置我的后代孩子的滚动视图的内容插入? 让我们来举个例子吧。我正在做一个自定义容器控制器(CCC),底部有一个半透明的视图(如TabBar),我的容器控制器的子控制器是一个导航控制器(NC),它具有一个表视图控制器(TVC)作为儿童。因此,层次结构很简单:iOS 7自定义容器控制器 - 如何设置子控制器的视图插图?
[CCC]
↑
[NC]
↑
[TVC]
现在的UINavigationController和的UITabBarController已经做到这一点:他们设置了TVC contentInset,使他们的NavBar(或的TabBar)下滚动。但是我怎样才能达到相同的行为? 我希望我的TVC(或其他)能够100%不知道其层次结构,所以我不能让TVC“手动”设置其内容插入。
我实现的第一个解决方案是在CCC中实现 - (void)viewWillLayoutSubviews并导航层次结构,查找叶控制器检查其视图是否为ScrollView。它工作正常,直到我在NC内部推出另一个TableViewController(TVC2)。这样做viewWillLayoutSubviews没有被调用,CCC无法知道其子TVC2。
UINavigationController和UITabBarController内部采用什么策略?或者我怎样才能使它工作?
我试图添加到我的自定义容器的方法' - (id)bottomLayoutGuide'返回实现'UILayoutSupport'的自定义'UIView'子类。长度方法返回'90.0f',但没有任何变化。我也注意到,半透明的酒吧有一个零bottomLayoutGuide。所以我认为这不是正确的做法。 –
davidefender
2014-09-20 10:00:44
不要返回不同的视图。相反,请获取系统布局指南视图并修改其框架。 – 2014-09-20 10:24:23
不工作,表视图仍然隐藏在自定义“tabbar”下: 'UIView * bottomLayoutGuide =(UIView *)self.bottomLayoutGuide; CGRect frame = bottomLayoutGuide.frame; frame.size.height = 100; bottomLayoutGuide.frame = frame;' – davidefender 2014-09-21 17:16:00