我在另一个(A)上呈现一个视图控制器(B),我希望B的背景是透明的,这样A在背景中仍然可见。
因此,在展示B之前,modalPresentationStyle
设置为.overCurrentContext
,B设置view.backgroundColor = UIColor.clear
,以便显示透明背景。
然而,当我解雇B并返回A时,类似viewDidAppear
,viewWillAppear
等的方法不会被重新触发。
如果我将上述modalPresentationStyle
更改为.fullScreen
,viewWillAppear
这样会在返回A时重新触发,但这一次,我失去了透明背景。
总而言之,当我返回A时,如何在呈现的视图上实现透明背景并重新触发A上的viewDidAppear
等方法?
答案 0 :(得分:2)
当您呈现全屏时,会从视图中删除呈现视图 - 因此透过视图无法看到任何内容。所以这种方法对你不起作用。
当您呈现当前上下文时,呈现视图仍然存在 - 但为什么 viewDidAppear等不会被调用 - 它永远不会消失,因此它没有重新出现。
而不是viewDidAppear使用另一种检测透明视图已被解除的方法,例如展开segue或this SO answer中讨论的其他方法之一。