今天尝试着在一个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上操作。
本文探讨了iOS中使用presentModalViewController展示半透明视图控制器时遇到的问题:动画结束后底层视图变为黑色。文章提供了合理的解释及解决方案,包括设置modalPresentationStyle为UIModalPresentationCurrentContext和在rootViewController上调用presentModalViewController。
3090

被折叠的 条评论
为什么被折叠?



