modal 控制器切換,完成頁面跳轉(zhuǎn)

除了push之外,還有另外一種控制器的切換方式,那就是Modal

任何控制器都能通過Modal的形式展示出來

Modal的默認效果:新控制器從屏幕的最底部往上鉆,直到蓋住之前的控制器為止

以Modal的形式展示控制器

- (void)presentViewController:(UIViewController*)viewControllerToPresent animated: (BOOL)flag completion:(void(^)(void))completion

關(guān)閉當(dāng)初Modal出來的控制器

- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void(^)(void))completion;

實現(xiàn)原理:

- (IBAction)modal:(id)sender {

//當(dāng)一個控制器被銷毀的時候,控制器的View是可以存在的.

//當(dāng)一個控制器被銷毀的時候,控制器View上所有的業(yè)務(wù)邏輯都不能夠處理.

TwoViewController*twoVC = [[TwoViewControlleralloc]init];

self.twoVC= twoVC;

//modal出來的View添加在窗口上面,把之前的根控制器的View移除

//[self presentViewController:twoVC animated:YES completion:^{

// modal完成是調(diào)用

//}];

//手動實現(xiàn)modal效果

//0.獲取主窗口

UIWindow*keyWindow = [UIApplicationsharedApplication].keyWindow;

//1.把modal出來的控制器添加到窗口上.

[keyWindowaddSubview:twoVC.view];

//2.從下往上鉆的動畫,先把控制器的View的Y值設(shè)為屏幕的高度,一開始看不到的狀態(tài)

CGRectframe = twoVC.view.frame;

frame.origin.y= [UIScreenmainScreen].bounds.size.height;

twoVC.view.frame= frame;

//再通過一動畫效果把Y值設(shè)為0.就有一種往上鉆的動畫了.

[UIViewanimateWithDuration:0.5animations:^{

CGRectframe = twoVC.view.frame;

frame.origin.y=0;

twoVC.view.frame= frame;

}completion:^(BOOLfinished) {

[self.viewremoveFromSuperview];//顯示twoVC后移除oneVC中的view,是移除view控制器還在,view也還在,只是不顯示,同pop移除方法

}];

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容