Modal
除了push之外,还有另外一种控制器的切换方式,那就是Modal
任何控制器都能通过Modal的形式展示出来
Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止
以Modal的形式展示控制器- (void)presentViewController:(UIViewController*)viewControllerToPresent animated: (BOOL)flag completion:(void(^)(void))completion关闭当初Modal出来的控制器- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void(^)(void))completion;
注意点
谁modal谁就强引用modal出来的控制器 如果一个控制器的view显示到屏幕上,这个控制器一定不能被销毁.
modal的底层实现
自己需要Modal出OneViewController的view
1.把OneViewController的view添加到窗口上,移除之前窗口上的viewUIWindow*keyWindow = [UIApplicationsharedApplication].keyWindow;[keyWindow addSubview:oneVc.view];
2.慢慢往上钻的动画//先设置形变oneVc.view.transform=CGAffineTransformMakeTranslation(0, keyWindow.bounds.size.height);[UIViewanimateWithDuration:0.5animations:^{// 还原形变oneVc.view.transform=CGAffineTransformIdentity; } completion:^(BOOLfinished) { [self.viewremoveFromSuperview]; }];}