前言
眾所周知卫漫,iOS顯示新的控制器方法通常只有三個:A.push方式; B.modal方式; C.設置為keywindow的根控制器菲饼。 而最靈活的貌似是modal方式,幾乎可以在隨處冒出來列赎。
使用
既然modal一個控制器這么好用宏悦,設置完屬性讓控制器消失也方便,要處理一些比較復雜的業(yè)務時包吝,如果你創(chuàng)建一個View饼煞,要設置代理等方式添加事件監(jiān)聽,而控制器可以直接處理诗越,那我們最好選擇使用modal啦砖瞧。
現(xiàn)在比較流行的登錄方式,就是用modal方式實現(xiàn)的嚷狞,在你需要登錄才能操作的界面块促,直接modal出登錄控制器:
LoginViewController *loginVc = [[LoginViewController alloc]init];
[self presentViewController:loginVc animated:YES completion:nil];
而你想讓登錄控制器消失,直接在登錄控制器里一句代碼搞定:
[self dismissViewControllerAnimated:YES completion:nil];
回歸主題
廢話說了這么多床未,主要是為了簡單介紹一下modal的基本用法竭翠。好了,下面正式上干貨薇搁。
modal方式present一個半透明的ViewController斋扰,直接上代碼:
MSTestViewController *vc = [[MSTestViewController alloc] init];
vc.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
float version = [UIDevice currentDevice].systemVersion.floatValue;
if (version < 8.0) { // iOS 7 實現(xiàn)的方式略有不同(設置self)
self.modalPresentationStyle = UIModalPresentationCurrentContext;
// iOS8以下必須使用rootViewController,否則背景會變黑
[self.view.window.rootViewController presentViewController:vc animated:YES completion:^{
}];
} else { // iOS 8 以上實現(xiàn)(設置vc)
vc.modalPresentationStyle = UIModalPresentationOverCurrentContext|UIModalPresentationFullScreen;
//如果控制器屬于navigationcontroller或者tababrControlelr子控制器,不使用UIModalPresentationFullScreen 的話, bar 會蓋住你的modal出來的控制器
[self presentViewController:vc animated:YES completion:^{
// 也可以在這里做一些完成modal后需要做得事情
}];
}
最后
很多時候,我們modal出來的控制器都不是透明的啃洋,而網(wǎng)上能實現(xiàn)的方式分享很少传货,特此分享給有需要的同學!