1、容器视图
![](https://img.haomeiwen.com/i2112071/bfd54d40d91c5e9e.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的按钮的时候会没有反应。
![](https://img.haomeiwen.com/i2112071/314bfad5989bdd2c.gif)
![](https://img.haomeiwen.com/i2112071/41e35717499e7658.gif)
![](https://img.haomeiwen.com/i2112071/53c26888fb4433cc.png)
3、下面是Xcode7是苹果官方给出的自定义视图的建议
![](https://img.haomeiwen.com/i2112071/7909b367b7a03dc3.png)
![](https://img.haomeiwen.com/i2112071/49fc9a257f2ceccc.png)
![](https://img.haomeiwen.com/i2112071/fadae5d21a268633.png)
网友评论