建立一個背景透明的UIViewController

流火行者發表於2015-07-02

有時候想讓UIViewController背景透明,讓我們可以看到下層的UI,直接設定它的背景顏色為clearColor(),還是有黑色的預設背景在那裡。下面是解決該問題的例子:

在storyboard建立兩個UIViewController,vc1和vc2,在vc1上新增按鈕pop,點選彈出vc2,在vc2上新增按鈕dismiss點選退出vc2返回vc1

首先在vc2的viewdidload方法裡面設定該controller的背景顏色為透明的:

下面是vc1中程式碼:

 

注意:如果是push,pop切換控制器,就不能設定背景透明,因為他們是控制器轉換,導航堆疊裡面出去了就沒有了,下層已經沒有了UI,只能是預設的黑色,而present不一樣,這種切換是直接覆蓋在上層,沒有控制器進出堆疊的概念,所以允許設定上層背景透明。如上圖22行那樣是錯誤的,達不到透明的效果。

下面是執行效果:

這種透明有一個很大的好處,在控制器切換的過程中,控制器裡面的動畫可以實現和上層控制器的動畫天衣無縫的連貫,就像ipad上系統自帶的照片app,點選返回,當前的照片會動畫匯聚到上一級的座標處,其實是切換了控制器,使用者卻感覺還是在同一個UI上,動畫銜接毫無破綻。

 

 

相關文章