将vc覆盖在当前vc之上,类似于弹框
2019-04-02 本文已影响0人
lmao94
之前在一个控制器里想做个弹框的视图,一般都是创建一个view,然后做半透明,然后添加到keyWindow上.
后来就出现各种问题,比如IQKeyboard的页面自动适应调整高度只在vc中有效,或者想在这个弹出的页面中独立的网络交互,这些再用view来做感觉就很不合适,然后发现了下面的做法
- 当前页面中正常创建vc
UIViewController *coverVC = [UIViewController new];
coverVC.view.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; //黑色半透明
- 关键点的代码,给当前控制器和即将推出的控制器推出的风格进行设置,这样present出现的vc会覆盖在当前的vc画面之上
coverVC.modalPresentationStyle = UIModalPresentationOverCurrentContext;
self.modalPresentationStyle = UIModalPresentationCurrentContext;
- 之后present控制器
[self presentViewController:selectSpecVC animated:YES completion:nil];
- 在推出控制器中dismiss销毁
[self dismissViewControllerAnimated:YES completion:nil];