4

我正在以这种方式创建视图控制器:

 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 分享时,你会看到背景,但它会变暗,你无法与之互动。我怎样才能做到这一点?

4

3 回答 3

4

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

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

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

您需要调整传入视图的框架以将其定位在其新的超级视图中,但这应该会给您更多的自由。

于 2012-12-05T18:08:26.933 回答
4

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

于 2013-12-04T15:06:01.723 回答
2

iOS8+

您可以使用下面的 iOS8+ 代码片段,它对我有用

SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;           
[self presentViewController:secondViewController animated:YES completion:nil];    
于 2017-01-11T07:40:58.550 回答