呈现全屏时的透明视图控制器背景
Posted
技术标签:
【中文标题】呈现全屏时的透明视图控制器背景【英文标题】:Transparent View Controller Background When Presented Full Screen 【发布时间】:2017-03-12 05:15:20 【问题描述】:我在另一个(A) 上展示了一个视图控制器(B),我希望B 的背景是透明的,这样A 在背景中仍然可见。
因此,在呈现 B 之前,将其 modalPresentationStyle
设置为 .overCurrentContext
并且 B 具有 view.backgroundColor = UIColor.clear
以便呈现透明背景。
但是,当我解除 B 并返回 A 时,不会重新触发 A 的方法,例如 viewDidAppear
、viewWillAppear
等。
如果我将上面的modalPresentationStyle
更改为.fullScreen
,viewWillAppear
等会在返回 A 时重新触发,但这一次,我失去了透明背景。
总而言之,当我返回 A 时,如何在呈现的视图上实现透明背景以及在 A 上重新触发诸如 viewDidAppear
之类的方法?
【问题讨论】:
【参考方案1】:当您全屏显示时,显示视图会从视图中移除 - 因此通过透明视图看不到任何东西。所以这个方法不适合你。
当您在当前上下文中呈现时,呈现视图仍然存在 - 但这就是 为什么 viewDidAppear 等不被调用 - 它从未消失,因此它没有重新出现。
使用另一种方法来检测您的透明视图已被关闭,而不是 viewDidAppear,例如 unwind segue 或this SO answer 中讨论的其他方法之一。
【讨论】:
以上是关于呈现全屏时的透明视图控制器背景的主要内容,如果未能解决你的问题,请参考以下文章
UIViewController 被另一个全屏视图控制器覆盖,但没有从层次结构中删除