本文介绍如何用简单的方式,实现这样一种效果:一个新的全屏ViewController,以modal的方式遮住原来的页面,但是是半透明的,还可以看到原来的页面
全屏遮罩
一开始我尝试这种方法:
YLSLockScreenViewController *lockScreenController = [[YLSLockScreenViewController alloc] init];// 新ViewController
lockScreenController.view.backgroundColor = [UIColor clearColor];// 设置背景色为透明
lockScreenController.modalPresentationStyle = UIModalPresentationFullScreen;// 全屏
[self.mainViewController presentViewController:lockScreenController animated:YES completion:nil];
结果整个背景是黑色的,搜索了一下,原因是如果新的ViewController以全屏的方式,完全盖住了原来的ViewController,那么ios为了节省内存,会自动将原来的ViewController的view给unload掉,所以背景就变黑了:
The “problem” is that iOS is very finicky about not wasting memory,