在iOS上present一个半透明的viewController

原创 2013年12月06日 20:32:52

今天尝试着在一个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:.

最终在SO上找到这么个问题,以及一份可行的方案

viewController.view.backgroundColor = [UIColor clearColor];
rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
[rootViewController presentModalViewController:viewController animated:YES];

这里有两个点:一是设置modalPresentationStyle为UIModalPresentationCurrentContext,二是需要在rootViewController上操作。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS ViewController透明化

实现功能:ViewController_A调出ViewController_B,并且使ViewController_B的背景是透明的。 左图为ViewController_A,右图为ViewContr...

iOS presentViewController背景色透明

废话少说:presentViewController背景色透明。

PresentViewController切换界面

视图切换,没有NavigationController的情况下,一般会使用presentViewController来切换视图并携带切换时的动画, 其中切换方法如下: – presentV...

presentModalViewController 的动画效果

系统自带(四种效果): presentModalViewController模态的动画效果设置:      UIViewController *detailViewControlle...

UIViewController推出的半透明效果

1.在ios7以前:UIViewController *VC = [[UIViewController alloc]init];self.modalPresentationStyle = UIModa...

UIViewController 推出另外一个半透明的UIViewController

http://my.oschina.net/starmier/blog/364383 效果图如下所示:           说明:上面的半透明视图1(ViewController...

iOS7、8如何present模态半透明控制器探讨

iOS8及以上情况很简单:         1)代码:               &...

iOS push跳转页面时,页面透明交叉的问题。

A-B   Apush出B时,出现上面的透明问题, 是因为B页面背景色透明。  所以解决方法是设置B的backgroundcolor为白色或其他颜色。

self presentViewController 弹出框透明化

有时候应用需要使用覆盖全屏的弹出框,用presentViewController 处理起来会比较方便,但是在设置透明之后,presentViewController在动画中看到是透密的,动画结束后就变...

如何弹出半透明UIViewController

为了更好的显示效果,想要弹出一个半透明UIViewController,刚开始以为只要把目标ViewController的背景设成半透明就行了,哪知动画结束后,背景就变黑了。 百度了一下,还是可以实现...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)