一、主要用途
弹出模态ViewController是IOS变成中很有用的一个技术,UIKit提供的一些专门用于模态显示的ViewController,如UIImagePickerController等。弹出模态ViewController主要使用于一下这几种情形:
1、收集用户输入信息
2、临时呈现一些内容
3、临时改变工作模式
4、相应设备方向变化(用于针对不同方向分别是想两个ViewController的情况)
5、显示一个新的view层级
这几种情形都会暂时中断程序正常的执行流程,主要作用是收集或者显示一些信息。
二、几个概念和常用设置
1、presenting view controller Vs presented view controller
当我们在view controller A中模态显示view
controller B的时候,A就充当presenting view controller(弹出VC),而B就是presented
view
controller(被弹出VC)。官方文档建议这两者之间通过delegate实现交互,如果使用过UIImagePickerController
从系统相册选取照片或者拍照,我们可以发现imagePickerController和弹出它的VC之间就是通过
UIImagePickerControllerD
2、Modal Presentation Styles(弹出风格)
通过设置presenting VC的modalPresentationStyle属性,我们可以设置弹出View Controller时的风格,有以下四种风格,其定义如下:
typedef enum { UIModalPresentationFullScreen = 0,
UIModalPresentationPageS heet,
UIModalPresentationFormS heet,
UIModalPresentationCurre ntContext
} UIModalPresentationStyle ;
UIModalPresentationFullS
UIModalPresentationPageS
UIModalPresentationFormS
UIModalPresentationCurre
这四种方式在iPad上面统统有效,但在iPhone和iPod
touch上面系统始终已UIModalPresentationFullS
3、Modal Transition Style(弹出时的动画风格)
通过设置presented VC的presenting VC的modalTransitionStyle属性,我们可以设置弹出presented VC时场景切换动画的风格,其定义如下:
typedef enum { UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFl ipHorizontal,
UIModalTransitionStyleCr ossDissolve,
UIModalTransitionStylePa rtialCurl
} UIModalTransitionStyle;
我们可以看到有从底部滑入,水平翻转进入,交叉溶解以及翻页这四种风格可选。这四种风格在不受设备的限制,即不管是iPhone还是iPad都会根据我们指定的风格显示转场效果。
4、Dismiss Modal ViewController(消失弹出的VC)
消失presented VC,我们可以通过调用以下两个函数中的任何一个来完成
dismissModalViewControll erAnimated: // 将要废弃,不赞成继续使用
dismissViewControllerAni mated:completion:
谁来调用这消失presented VC的这个方法:正确的做法是“谁污染谁治理”,即
presenting VC调用上面的方法来取消presented
VC的显示。这样做有一个好处,如果一个VC真不用户做的不同选择可能弹出不同的view
controller,当不再需要显示被弹出的view
controller的时候,直接调用[self
来自:http://www.cnblogs.com/smileEvday/archive/2012/05/29/presentModalViewControll