在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上操作。

iOS8下 presentViewController的透明部分 变成黑色不透明了

iOS8下 原来presentViewController的画面(不是全画面,画面以外地方透明)的透明部分 变成黑色不透明了 换句话说,self.modalPresentationStyle...
  • bluewindaa
  • bluewindaa
  • 2017年04月24日 13:22
  • 566

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

http://my.oschina.net/starmier/blog/364383 效果图如下所示:           说明:上面的半透明视图1(ViewController...
  • a351945755
  • a351945755
  • 2015年08月18日 16:44
  • 5461

UIViewController推出的半透明效果

1.在ios7以前:UIViewController *VC = [[UIViewController alloc]init];self.modalPresentationStyle = UIModa...
  • jacob_ios
  • jacob_ios
  • 2016年08月11日 22:02
  • 572

presentViewController弹出一个半透明的UIViewController

presentViewController 推出另外一个半透明的UIViewController
  • miaoshichang
  • miaoshichang
  • 2015年08月18日 13:02
  • 2054

iOS presentViewController背景色透明

废话少说:presentViewController背景色透明。
  • Aaidong
  • Aaidong
  • 2015年09月24日 05:17
  • 3516

present出ViewController的页面为透明的

present出ViewController的页面为透明的
  • a_ss_a
  • a_ss_a
  • 2015年08月19日 20:07
  • 1039

iOS 透明视图控制器

我们有时候需要使用弹出框,当然我们可以使用alertview,但是alertview的效果是有限的, 所以这个时候,我们就可以使用视图控制器了。很多情况下,我们都像让我们的视图控制器背景透明, 在...
  • chengjiamei
  • chengjiamei
  • 2015年08月06日 21:50
  • 1945

iOS开发弹出半透明视图

一、项目问题项目中经常会遇到需要弹出一个半透明视图的情况,先前自己想着用UIWindow做,后来发现因为界面控制器复杂不好管理,于是放弃,度娘了一下,发现直接用modal的方法就可实现,简单又明了。先...
  • quan0981163
  • quan0981163
  • 2017年02月03日 18:48
  • 1974

iOS 弹出一个透明的控制器

LoginTipViewController * loginTipVC = [[LoginTipViewController alloc]init];     self.definesPresent...
  • HDFQQ188816190
  • HDFQQ188816190
  • 2016年04月13日 14:42
  • 2150

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

iOS8及以上情况很简单:         1)代码:                     CodeViewController *vc = [[CodeViewController allo...
  • liu__000
  • liu__000
  • 2016年09月23日 11:50
  • 840
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在iOS上present一个半透明的viewController
举报原因:
原因补充:

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