全屏显示时的透明视图控制器背景

Transparent View Controller Background When Presented Full Screen

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

因此,在呈现B之前,它的modalPresentationStyle被设置为.overCurrentContext并且B有view.backgroundColor = UIColor.clear所以透明背景呈现。

然而,当我关闭 B 并 return 回到 A 时,A 的方法如 viewDidAppearviewWillAppear 等不会被重新触发。

如果我将上面的 modalPresentationStyle 更改为 .fullScreenviewWillAppear 这样会在 return 返回 A 时重新触发,但是这次,我输了透明背景。

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

当您呈现全屏时,呈现视图将从视图中移除 - 因此通过透明视图看不到任何东西。所以这个方法对你不起作用。

当您在当前上下文中呈现时,呈现视图仍然存在 - 但那是 为什么 viewDidAppear 等不会被调用 - 它从未消失,所以它没有重新出现。

不要使用 viewDidAppear,而是使用另一种方法来检测您的透明视图已被关闭,例如展开转场或 this SO answer 中讨论的其他方法之一。