UIContainerView(容器视图)和自定义容器视图

1、容器视图

屏幕快照 2016-11-24 下午10.01.11.png

容器视图本身就是一个UIView控件,要说它的特别之处只是在于它内嵌了一个普通的控制器,这个控制器的视图大小和容器视图的大小保持一致。

2、自定义容器视图

2.1、自定义容器视图的步骤:
2.1.1、创建一个控制器对象one
2.1.2、把控制器对象one作为子控制器添加到宿主控制器中
2.1.3、把控制器one的视图添加到宿主控制器的视图中
2.2.4、实现didMoveToParentViewController方法【苹果的解释:如果有动画参与的话,必须要写这行代码!否则:动画结束后,控制器的视图无法接受用户交互!】
2.2.5、如果不实现2.1.2步骤,会造成图3中结果。响应者链断裂,当用户点击one控制器界面中的按钮的时候,按钮无法响应事件。

 CLOneViewController *one = [[CLOneViewController alloc] init];
    //添加到宿主控制器,成为宿主的子控制器
    [self addChildViewController:one];
    // 设置视图的frame
    one.view.frame = self.view.bounds;
    // 把one的view添加到宿主的视图中
    [self.view addSubview:one.view];
    // 保证会有动画效果的情况下,程序能够正常运行
    [one didMoveToParentViewController:self];
// 在宿主控制器中,如果没有成为宿主的子控制器,one中的view的子控件无法响应用户事件,点击one中的view的按钮的时候会没有反应。
图2.gif
图3.gif
图4.png

3、下面是Xcode7是苹果官方给出的自定义视图的建议

屏幕快照 2016-11-24 下午11.13.32.png
屏幕快照 2016-11-24 下午11.20.53.png
屏幕快照 2016-11-24 下午11.25.06.png

推荐阅读更多精彩内容