2017-03-12 68 views
0

我將視圖控制器(B)顯示在另一個(A)上,我希望B的背景透明,以便A在背景中仍然可見。當全屏顯示透明視圖控制器背景

因此,在呈現B之前,它是modalPresentationStyle被設置爲.overCurrentContext而B具有view.backgroundColor = UIColor.clear以便透明背景存在。

但是,當我解僱B並返回給A時,類似viewDidAppear,viewWillAppear等的方法不會被重新觸發。

如果我將上面的modalPresentationStyle更改爲.fullScreen,viewWillAppear這樣會在返回到A時重新觸發,但這次我失去了透明背景。總而言之,當我回到A時,如何在A上實現透明背景,並在A上重新觸發方法,如viewDidAppear

回答

2

當您呈現全屏時,呈現視圖將從視圖中移除 - 因此沒有任何東西可以透過您的透明視圖。所以這種方法不適合你。

當您在當前上下文中呈現時,呈現視圖仍然存在 - 但這就是爲什麼 viewDidAppear等不會被調用 - 它從未消失,因此它沒有重新出現。

而不是viewDidAppear使用另一種方法來檢測您的透明視圖已被駁回,例如放鬆segue或在this SO answer中討論的其他方法之一。