繁体   English   中英

UIViewController透明背景

[英]UIViewController transparent background

我正在以这种方式创建一个viewcontroller:

 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"PhotoViewControlleriPhone" bundle:nil];
                                UIViewController *vc = [sb instantiateInitialViewController];

                               vc.view.backgroundColor = [UIColor clearColor];
                               self.modalPresentationStyle = UIModalPresentationCurrentContext;

                               [self presentModalViewController:vc animated:NO];

                               vc.view.frame = CGRectMake(imageView.frame.origin.x, imageView.frame.origin.y + 64, imageView.frame.size.width, 200.000000);

                               vc.view.layer.cornerRadius = 10; // this value vary as per your desire
                               vc.view.clipsToBounds = YES;

viewcontroller不是全屏,因此您仍然可以看到前一个。 我想能够看到它,但锁定它。 就像当你使用ios facebook分享时,你会看到背景,但它会变得更暗,你无法与之交互。 我怎样才能做到这一点?

我相信问题是你使用-presentModalViewController:animated:来显示它。 使用该方法带有关于您正在托管的视图控制器的一些假设; 它所做的一个假设(至少在iPhone型设备上)是视图控制器占据整个屏幕并且是不透明的。

要解决此问题,请尝试手动将模态视图控制器的视图添加到当前视图控制器的视图中。 您需要将视图控制器层次结构设置为与视图层次结构匹配,因此您的代码将如下所示:

[self addChildViewController:vc];
[self.view addSubview:vc.view];

您需要调整传入视图的帧以将其定位在新的超视图中,但这样可以让您更自由。

我的解决方法是使用代码截取屏幕截图 ,将UIImage作为参数传递给新的UIViewController,并将其显示为背景图像。 通过这种方式,它看起来是透明的,您不必禁用可访问/可访问的基础控件。

iOS8上+

您可以在iOS8 +下使用以下代码段,它适用于我

SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;           
[self presentViewController:secondViewController animated:YES completion:nil];    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM