iOS不透明UIViewController位于UINavigationController之上

iOS不透明UIViewController位于UINavigationController之上,ios,uiviewcontroller,uinavigationcontroller,Ios,Uiviewcontroller,Uinavigationcontroller,我试图从UINavigationController呈现不透明的UIViewController。当视图被设置动画时,它是不透明的,这正是我想要的。但是,设置动画后,背景将变为灰色。当上一个视图是UIViewController时,我就开始工作了。当我使用UINavigationController作为前一个视图时,我开始出现这个问题 切换到视图的代码: UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:STORYBOARD_

我试图从UINavigationController呈现不透明的UIViewController。当视图被设置动画时,它是不透明的,这正是我想要的。但是,设置动画后,背景将变为灰色。当上一个视图是UIViewController时,我就开始工作了。当我使用UINavigationController作为前一个视图时,我开始出现这个问题

切换到视图的代码:

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:STORYBOARD_IPHONE bundle:nil];
UIViewController *viewController = [storyBoard instantiateViewControllerWithIdentifier:viewName];
[self presentViewController:viewController animated:YES completion:nil];
使显示视图不透明的代码:

self.view.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.7];
我认为这可能与呈现视图的类不是UINavigationController,而是UINavigationController中的UIViewController这一事实有关。因此,我尝试使用self.navigationController presentViewController,但得到了相同的结果

如何修复此问题以使背景保持不透明

以前的带有嵌入式UIViewController的UINavigationController:

动画期间的外观:

动画后的外观:


下面是我经常使用的一个例程,用于查看哪些视图位于我感兴趣的视图后面:

// useful debugging method - send it a view and it will log all subviews
// can be called from the debugger
- (void) viewAllSubviews:(UIView *) topView Indent:(NSString *) indent  {
    for (UIView * theView in [topView subviews]){
        NSLog(@"%@%@", indent, theView);
        if ([theView subviews] != nil)
            [self viewAllSubviews:theView Indent: [NSString stringWithFormat:@"%@ ",indent]];
    }
}
我通常把它放在一个我可以在全球范围内访问的地方。就像

[self viewAllSubviews:rootViewController.view Indent:@"  "];
它将向控制台打印以您提供的任何视图为根的视图树,并根据级别缩进子视图。它应该揭示出你感兴趣的对象背后的东西,你可以检查每个视图的帧坐标


这将为您提供一个很好的线索,了解视图背后的内容。

您在哪里编写背景色代码。它在viewdidload中吗?如果是,则尝试设置backgoundcolor在ViewWillDisplay中。是的,我在viewDidLoad中设置了它。我试着在ViewWillDisplay中设置它,ViewDidDisplay。我也有同样的问题。你正在将视图设置为alpha 0.7,并且想知道为什么你可以看穿它?你的观点背后是什么?可能是黑色背景?这和70%的白色很可能是造成灰色的原因。@OwenHartnett它一定是黑色背景,但为什么是黑色背景?为什么它不显示其后面的UINavigationController,就像它是UIViewController时一样?UINavigationController是否有一个后面有白色背景的视图?或者该区域是透明的,并且您正在查看它后面的UIwindow,它可能有黑色背景?您是在设置rootviewController,还是只是在UINavigationController中调用init?