1、容器視圖
屏幕快照 2016-11-24 下午10.01.11.png
容器視圖本身就是一個UIView控件,要說它的特別之處只是在于它內嵌了一個普通的控制器,這個控制器的視圖大小和容器視圖的大小保持一致。
2、自定義容器視圖
2.1、自定義容器視圖的步驟:
2.1.1、創(chuàng)建一個控制器對象one
2.1.2、把控制器對象one作為子控制器添加到宿主控制器中
2.1.3、把控制器one的視圖添加到宿主控制器的視圖中
2.2.4、實現(xiàn)didMoveToParentViewController方法【蘋果的解釋:如果有動畫參與的話,必須要寫這行代碼!否則:動畫結束后,控制器的視圖無法接受用戶交互!】
2.2.5、如果不實現(xiàn)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