在iOS上present一个半透明的viewController
今天尝试着在一个ViewController上面调用:- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated来展示一个半透明的viewController:UIViewController *vc = [[[UIViewControlle
·
今天尝试着在一个ViewController上面调用:
- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated
来展示一个半透明的viewController:
UIViewController *vc = [[[UIViewController alloc] init] autorelease];
vc.view.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
[self presentModalViewController:vc animated:YES];
这样可以发现在动画过程中是半透明的,但是动画结束后就看不到下面一个viewController的内容了,变黑色了。
为什么呢?搜索了一番得到一份比较合理的结论:
The “problem” is that iOS is very finicky about not wasting memory,
and since the modal view will completely cover the one beneath it,
it doesn’t make much sense to keep it loaded.
Therefore, iOS unloads the view that presents the modal one.
You may check this behavior by implementing -viewWillDisappear: and -viewDidDisappear:.
viewController.view.backgroundColor = [UIColor clearColor];
rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
[rootViewController presentModalViewController:viewController animated:YES];
这里有两个点:一是设置modalPresentationStyle为UIModalPresentationCurrentContext,二是需要在rootViewController上操作。
更多推荐
已为社区贡献10条内容
所有评论(0)