15

在 iOS 7 之前,根据这个流行的 Stackoverflow问题,显示具有清晰背景的 ViewController 的方法是在主 ViewController 中执行以下操作:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
    vc.view.backgroundColor = [UIColor clearColor];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];

但是,正如我最近在 iOS 7 中发现的那样(以及其他人对主要答案的评论),上述解决方案不再有效,而只是显示了一个黑色模型控制器。我知道透明度在 iOS 7 中主要使用,因此透明视图控制器很可能是可能的。我还没有找到解决这个问题的方法,想知道是否有人知道如何解决这个问题。谢谢!

4

3 回答 3

8

我只是按照原始解决方案并在 Interface Builder 中应用了一些默认和自定义设置,在我看来它正在工作。

重要部分(与问题的代码非常相似):

- (IBAction)click:(id)sender {
    NSLog(@"click");


    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"TopOverVc"];

    vc.view.backgroundColor = [UIColor clearColor];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];
}
  • 还请找到 IB 快照: 在此处输入图像描述

  • 模拟器结果(按下按钮后):

在此处输入图像描述

希望我没有误解你的问题;)快乐编码!

于 2013-10-24T11:33:10.970 回答
-2

对于 iOS 7,继承 SecondViewController 并尝试在 SecondViewController 的 viewDidLoad 中设置视图背景颜色

self.view.backgroundColor = [UIColor clearColor];
于 2013-10-24T12:47:33.850 回答
-3

为什么不使用这个

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];

    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];

 vc.view.backgroundColor = [UIColor clearColor];

加载视图后尝试更改视图的 BG 颜色。在您的第一个更改视图和呈现中。视图生命周期不会以这种方式进行

于 2013-10-21T04:59:41.810 回答