系統模态方法:
//點選modal時調用.
- (IBAction)modal:(id)sender {
//當一個控制器被銷毀的時候,控制器的View是可以存在的.
//當一個控制器被銷毀的時候,控制器View上所有的業務邏輯都不能夠處理.
TwoViewController *twoVC = [[TwoViewController alloc] init];
self.twoVC = twoVC;
//modal出來的View添加在視窗上面,把之前的根控制器的View移除
[self presentViewController:twoVC animated:YES completion:^{
//modal完成是調用
}];
}
//modal出來的哪個控制器.哪個控制器就可以給它disMiss掉.
- (IBAction)close:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
手動實作modal效果:
//擷取主視窗
UIWindow *keyWindow = [UIApplicatio sharedApplication].keyWindow;
//把modal出來的控制器添加到視窗上.
[keyWindow addSubview:twoVC.view];
//從下往上彈出的動畫,先把控制器的View的Y值設為螢幕的高度,剛開始看不到的狀态
CGRect frame = twoVC.view.frame;
frame.origin.y = [UIScreen mainScreen].bounds.size.height;
twoVC.view.frame = frame;
// 再通過動畫效果把Y值設為就有從下往上彈出的動畫了.
[UIView animateWithDuration: animations:^{
CGRect frame = twoVC.view.frame;
frame.origin.y = ;
twoVC.view.frame = frame;
}completion:^(BOOL finished) {
[self.view removeFromSuperview];
}];