我正在尝试从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:
动画期间的样子:
动画后的样子:
答案 0 :(得分:0)
这是我经常使用的例程,看看我感兴趣的视图背后有哪些视图:
// 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:@" "];
它将根据您提供的任何视图向控制台打印视图树,并根据级别缩进子视图。它应该只显示您感兴趣的对象背后的内容,并且可以检查每个视图的帧坐标。
这应该会为你提供一个很好的线索,了解背后的观点。