推送的视图应该以透明背景出现。

3

我只是从一个视图中推出另一个视图。 在这段代码之后,推出的视图会呈现为透明的。 我以前用过很多次。就是这么简单。

settings *set = [[settings alloc] initWithNibName:@"settings" bundle:nil];
set.view.backgroundColor = [ [UIColor blueColor] colorWithAlphaComponent:0.3f];
[self.navigationController pushViewController:set animated:YES ];

但是现在最新的iosxcode,推送的视图不再变为透明。如果有其他解决方案,请告诉我。

我已经参考了许多相关帖子,例如:

我向其他成员询问,但无法解决此问题。 这是第一页这是推送页面


首先,正确格式化问题!你的推送视图看起来怎么样?如果可能的话,在问题中添加截图! - Ketan Parmar
添加以下代码:self.navigationController.view.backgroundColor = [UIColor clearColor]; - ninjaproger
@Lion,我已经添加了屏幕截图。你可以看到第一页应该在背景中可见,但它没有出现。我以前用过很多次,但这次不起作用。 - Moxarth
@ninjaproger,我已经尝试过了,但没有成功。 - Moxarth
TViewController *push = [[TViewController alloc] initWithNibName:@"TViewController" bundle:nil]; self.navigationController.view.backgroundColor = [UIColor clearColor];push.view.backgroundColor = [UIColor colorWithRed:127.0f/255.0f green:127.0f/255.0f blue:127.0f/255.0f alpha:0.6f];[self.navigationController pushViewController:push animated:YES];我已经尝试过这个方法,但没有用。 - Moxarth
显示剩余2条评论
1个回答

1
你应该呈现你的视图控制器而不是推送,因为使用推送,你无法实现显示上一个视图控制器的透明度!
你可以调试视图层次结构来检查你的顶部视图和上一个视图之间有多少个视图。
要调试视图层次结构,你可以点击调试区域中的“调试视图层次结构”按钮 enter image description here

在推送页面上,有其他三个视图层次结构位于UIWindow和UIView之间。它们是UiLayoutContainerView、UiNavigationTransitionView和UiViewcontrollerWrapperView。所以你的意思是,要使UIView透明,我们也必须使这三个中间视图透明,是吗? - Moxarth
是的!也许我认为可以这样做!我还没有尝试过这种东西,但所有视图都应该有清晰的颜色,这些颜色应该保持不变!我建议您呈现视图控制器而不是推送。 - Ketan Parmar
好的方法。我也会尝试使用当前视图。但我以前多次使用这种编码。我以前从未遇到过有关此问题的问题。 - Moxarth
抱歉回复晚了,我尝试使用present view controller而不是push,但结果仍然一样,没有起作用。 - Moxarth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接