模态是push之后有一种 跳转到另外一个控制器的方式
1.模态 到 另一个控制器的的方法
[self presentViewController:<#(nonnull UIViewController *)#> animated:<#(BOOL)#> completion:<#^(void)completion#>]]
2.退出模态的方法
[self dismissViewControllerAnimated:<#(BOOL)#> completion:<#^(void)completion#>].
3.模态的原理
- 模态时,会把窗口上面的View给移除,把要 模态(modal)进来的控制器的View添加到窗口(window)上
- 下面模仿一下
- (1)假设有2个控制器 OneVC, TwoVC,窗口的Window的rootViewContoller是OneVC,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = [[OneVC alloc] init];
[self.window makeKeyAndVisible];
return YES
}
- (2)OneVC实现
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor redColor];
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
button.backgroundColor = [UIColor orangeColor];
[button addTarget:self action:@selector(handle) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
按钮方法实现--模态
TwoVC *twoVC = [[TwoVC alloc] init];
CGRect frame = twoVC.view.frame;
frame.origin.y = [UIScreen mainScreen].bounds.size.height;
twoVC.view.frame = frame;
[[UIApplication sharedApplication].keyWindow addSubview:twoVC.view];
self.twoVC = twoVC;
[UIView animateWithDuration:0.5 animations:^{
twoVC.view.frame = self.view.frame;
}completion:^(BOOL finished) {
[self.view removeFromSuperview];
}];
网友评论