如何推送一个清晰或alpha的UIViewCotroller?

问题描述 投票:-1回答:4

在UIViewController VC1中的一个按钮,从这个按钮出发,我们需要推送(不存在)一个UIViewController VC2,并且VC2的背景颜色是clearColor或者alpha。

也许有人会回答我:只要设置BackgroundColor[UIColor clearColor]就可以了,如果这样做,VC2在推的时候是透明的或带alpha的,但是动画完成后,它的背景色会奇怪的变成黑色或白色,这是我的疑惑,我只是想让VC2在VC1上,从VC1上可以看到VC1,而只推不存在。

ios controller push
4个回答
1
投票

你应该使用下面的代码。

[viewController2.view setBackgroundColor:[UIColor clearColor]];

0
投票

推送一个新的视图控制器会导致第一个视图控制器的视图从显示中移除。设置第二个视图控制器的背景色不会有帮助。

您可能需要将叠加作为第一个视图控制器的视图的子视图来管理。


0
投票

"呈现 "一个视图控制器意味着在另一个视图控制器上显示一个视图控制器。"推送 "一个视图控制器意味着将一个视图控制器替换为另一个视图控制器。如果您想保留另一个视图控制器,您必须呈现新的视图控制器,而不是推送它。

如果 "推 "的意思是 "从右边滑入",那么你真正的意思是你要用一个自定义的过渡来呈现它。这通常是通过一个 UIPresentationController 在iOS 8中。在iOS 7中,你可以用手操作稍微多一点,用 UIViewControllerTransitioningDelegate 来提供你想要的动画。

你应该看看 自定义UIViewController过渡 由Ash Furrow对iOS 7的方式进行了很好的介绍。iOS 8是很好的覆盖(在Swift中)由 "在Swift中使用UIPresentationController自定义演示".


0
投票

好了,最终解决方法:从VC1推送到VC2,VC1只需这样做。

step1,[VC1 addChildViewController:VC2]; [VC1.view addSubview:VC2.view]; [VC1 didMoveToParentViewController:self];setp2,VC2 setBackgroundColor clearColor或alpha。

© www.soinside.com 2019 - 2024. All rights reserved.