提供全屏时的透明视图控制器背景

时间:2017-03-12 05:15:20

标签: ios uiviewcontroller presentviewcontroller

我在另一个(A)上呈现一个视图控制器(B),我希望B的背景是透明的,这样A在背景中仍然可见。

因此,在展示B之前,modalPresentationStyle设置为.overCurrentContext,B设置view.backgroundColor = UIColor.clear,以便显示透明背景。

然而,当我解雇B并返回A时,类似viewDidAppearviewWillAppear等的方法不会被重新触发。

如果我将上述modalPresentationStyle更改为.fullScreenviewWillAppear这样会在返回A时重新触发,但这一次,我失去了透明背景。

总而言之,当我返回A时,如何在呈现的视图上实现透明背景并重新触发A上的viewDidAppear等方法?

1 个答案:

答案 0 :(得分:2)

当您呈现全屏时,会从视图中删除呈现视图 - 因此透过视图无法看到任何内容。所以这种方法对你不起作用。

当您呈现当前上下文时,呈现视图仍然存在 - 但为什么 viewDidAppear等不会被调用 - 它永远不会消失,因此它没有重新出现。

而不是viewDidAppear使用另一种检测透明视图已被解除的方法,例如展开segue或this SO answer中讨论的其他方法之一。