全屏显示时的透明视图控制器背景
Transparent View Controller Background When Presented Full Screen
我在另一个视图控制器 (A) 上展示了一个视图控制器 (B),我希望 B 的背景是透明的,这样 A 在背景中仍然可见。
因此,在呈现B之前,它的modalPresentationStyle
被设置为.overCurrentContext
并且B有view.backgroundColor = UIColor.clear
所以透明背景呈现。
然而,当我关闭 B 并 return 回到 A 时,A 的方法如 viewDidAppear
、viewWillAppear
等不会被重新触发。
如果我将上面的 modalPresentationStyle
更改为 .fullScreen
,viewWillAppear
这样会在 return 返回 A 时重新触发,但是这次,我输了透明背景。
总而言之,当我return返回A时,如何在呈现的视图上实现透明背景并在A上重新触发方法,例如viewDidAppear
?
当您呈现全屏时,呈现视图将从视图中移除 - 因此通过透明视图看不到任何东西。所以这个方法对你不起作用。
当您在当前上下文中呈现时,呈现视图仍然存在 - 但那是 为什么 viewDidAppear 等不会被调用 - 它从未消失,所以它没有重新出现。
不要使用 viewDidAppear,而是使用另一种方法来检测您的透明视图已被关闭,例如展开转场或 this SO answer 中讨论的其他方法之一。
我在另一个视图控制器 (A) 上展示了一个视图控制器 (B),我希望 B 的背景是透明的,这样 A 在背景中仍然可见。
因此,在呈现B之前,它的modalPresentationStyle
被设置为.overCurrentContext
并且B有view.backgroundColor = UIColor.clear
所以透明背景呈现。
然而,当我关闭 B 并 return 回到 A 时,A 的方法如 viewDidAppear
、viewWillAppear
等不会被重新触发。
如果我将上面的 modalPresentationStyle
更改为 .fullScreen
,viewWillAppear
这样会在 return 返回 A 时重新触发,但是这次,我输了透明背景。
总而言之,当我return返回A时,如何在呈现的视图上实现透明背景并在A上重新触发方法,例如viewDidAppear
?
当您呈现全屏时,呈现视图将从视图中移除 - 因此通过透明视图看不到任何东西。所以这个方法对你不起作用。
当您在当前上下文中呈现时,呈现视图仍然存在 - 但那是 为什么 viewDidAppear 等不会被调用 - 它从未消失,所以它没有重新出现。
不要使用 viewDidAppear,而是使用另一种方法来检测您的透明视图已被关闭,例如展开转场或 this SO answer 中讨论的其他方法之一。