iOS模态视图.md
1.概念
iOS开发中,在当前视图上弹出一个视图(模态视图)例如登录视图,分享视图,注册视图等等。
2.说明
实现一个简单的多视图应用,视图控制器都会有一个presentViewController
方法,用来显示模态视图窗口,在一些特别的环境下,例如登录,注册,分享等我们尤其希望使用这种方式去展现视图。
2.1 具体设置和使用
1.弹出模态视图窗口(presentViewController)方法
代码:
|
|
2.弹出时动画风格
弹出模态窗口时,如果我们选择了动画,那么我们可以通过modalTranslationStyle属性设置动画风格
UIModalTransitionStyleCoverVertical // 底部滑入。
UIModalTransitionStyleFlipHorizontal // 水平翻转。
UIModalTransitionStyleCrossDissolve // 交叉溶解。
UIModalTransitionStylePartialCurl // 翻页。
3.回收模态视图
|
|
4.presentingViewController
presentingViewController是UIViewController的属性,官方文档上这么解释
presentingViewController
The view controller that presented this view controller.
A 视图present了B视图,B视图的presentingViewContrller就是A视图
3.视图控制容器(ViewController Container)
UINavigationController
/ UITabBarController
/UISlipViewController
等都属于ViewController Container,这些类的共性是都有一个类型为ViewController
的对象数组,属性叫viewControllers
,用于保存一组ViewControlller, ViewController Container会有自己默认的外观。
任何的ViewController Container
对象都可以通过属性viewControllers
访问子对象,而子对象也可以通过navigationController
/tabbarController
/slipViewController
/presentViewController
找到相应的viewController Container
。
- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion;
A present B,那么A就有责任dismiss B,如果在B中调用[self dismissViewControllerAnimated…]就会A中发送dismiss,最终会由有A进行dismiss,相当于在B中执行[self.presentingViewController dismissViewControllerAnimated…]