storyboard中containerView的出现可以有效的对复杂的界面可以进行多控制器拆分,达到解耦的作用。其本质其实就是对控制器可视化的添加childViewController,但是也略有不同。
项目中有时会有隐藏containerView的需求,这时若在containerView引出的controller中对view设置hidden则会发现没有效果。在view中还是有一块透明区域被挡住。多次调试后发现,这是由于引入containerView后,首先会在原界面上先加入一个View,然后再加入的view才是真正containerView对应的控制器的view。
为了便于观察,设置为下图层级关系
层级关系.png运行后DebugView进行观察
DebugView效果.png发现有两个view被加到父view上了。此处即为代码添加childViewController的view的不同之处(代码添加只会有一个View添加)。
同时注意到containView的默认背景色为透明色
透明色的containView.png
如果隐藏View的时候是在黄色的controller中进行隐藏的,就会出现区域不能被点击的问提(有透明的View挡住了)。
总结:隐藏containerView的时候,一定是对containerView本身拖线到controller中进行隐藏
网友评论