modalPresentationStyle 使用present后背景頁面不隱藏

最近在做一個模仿iOS11 Music的項目幔嫂,其中一個播放器頁面是這個樣子的跪楞。


Apple Music

沒錯,他的頂部露出了一塊前一個頁面一部分堡赔。

我們都知道识脆,默認(rèn)的present方式展現(xiàn)的新頁面,是看不到上一個頁面的內(nèi)容的善已,即便是將controller的view透明灼捂,也只能看到黑色的背景。蘋果應(yīng)該是出于降低內(nèi)存的考慮换团,當(dāng)一個新的頁面被present或push出來后悉稠,就將之前的頁面移除了。


屏幕快照 2017-07-21 00.04.14.png

要實現(xiàn)這個功能艘包,我首先想到的是把上一個頁面截圖的猛,然后放在present出來的頁面的底下。想虎。卦尊。腦洞也是夠大的。其實蘋果早就為我們準(zhǔn)備了一個屬性:modalPresentationStyle舌厨,使用他岂却,就能控制是否隱藏前一個頁面。(接下來我們統(tǒng)一把前一個頁面稱為presenting VC, 把后一個頁面稱為presented VC)

modalPresentationStyle這個屬性的可選值非常多:

fullScreen:(默認(rèn))代表彈出VC時淌友,presented VC充滿全屏煌恢,如果彈出VC的wantsFullScreenLayout設(shè)置為YES的,則會填充到狀態(tài)欄下邊震庭,否則不會填充到狀態(tài)欄之下瑰抵。


fullScreen

pageSheet:代表彈出是彈出VC時,presented VC的高度和當(dāng)前屏幕高度相同器联,寬度和豎屏模式下屏幕寬度相同二汛,剩余未覆蓋區(qū)域?qū)儼挡⒆柚褂脩酎c擊,這種彈出模式下拨拓,豎屏?xí)rUIModalPresentationFullScreen的效果一樣肴颊,橫屏?xí)r候兩邊則會留下變暗的區(qū)。


pageSheet

就算自己把這個圖做出來了渣磷,還是想不明白具體是什么樣子的婿着,好在設(shè)置Wi-Fi里被我揪出了一列


IMG_0929.PNG

IMG_0930.PNG

系統(tǒng)設(shè)置的Wi-Fi密碼界面,豎屏是全屏展示醋界,橫屏的話就會變成一個正方形竟宋,這個大小應(yīng)該是系統(tǒng)控制的。類似的頁面應(yīng)該ipad上會更多形纺。

formSheet:這種模式下丘侠,presented VC的高度和寬度均會小于屏幕尺寸,presented VC居中顯示逐样,四周留下變暗區(qū)域蜗字。如果設(shè)備處于橫向并且鍵盤可見,則視圖的位置向上調(diào)整脂新,以使視圖保持可見挪捕。(是不是很熟悉,我們的alert就是這種方式呈現(xiàn)的)


formSheet

currentContext:這種模式下争便,presented VC的彈出方式和presenting VC的父VC的方式相同级零。

custom:自定義模式。這個模式可以最大化自定義專場的方式始花,需要實現(xiàn)UIViewControllerTransitioningDelegate代理妄讯。

overFullScreen:(新)簡單說就是不隱藏presenting VC,用于presented VC的view有透明的情況使用酷宵。那么這個和之前的有什么區(qū)別呢亥贸,區(qū)別主要在亮點:1.背景不會變深色(但還是會屏蔽觸控)2.presented VC view的大小和presenting VC一樣大時(即完全遮擋),前面幾個選項會直接隱藏presenting VC浇垦,而overFullScreen不考慮遮擋問題炕置,無條件顯示presenting VC。這就對presented VC大小和presenting VC一樣大但有透明的情況適用。


overFullScreen

overCurrentContext:(新)這個模式也能達(dá)到overFullScreen的效果朴摊,不同的是它會把跟控制器(tabbar)覆蓋到presented VC上面(讀了API還是搞不清是啥意思默垄。。甚纲。)

popover:一種類似于Mac上全局字典的彈出方式口锭,帶有一個箭頭,在iphone上顯示的是全屏效果介杆,只有在大屏幕上才顯示popover效果鹃操。


popover

好了,研究了這么多春哨,我們到底應(yīng)該選擇哪一個呢荆隘。起初我認(rèn)為formSheet比較合適,因為他默認(rèn)實現(xiàn)了背景變暗的效果(Music里也有這個效果)赴背。但使用之后發(fā)現(xiàn)始終無法完成這個效果椰拒,要么presented VC的大小改變不了(storyboard),要么presenting VC是黑色凰荚。后來我想了一下燃观,這個formSheet起初設(shè)計的場景,就是alert這種彈出框的效果浇揩,所以它默認(rèn)是居中的仪壮。如果要使用formSheet憨颠,還要控制view的位置胳徽,不太合理。而且storyboard中vc的view是無法改變大小的爽彤,因此只能使用overFullScreen模式养盗,將presented VC的透明度設(shè)為0,然后再鋪一個View上去适篙。
最后使用的時候有幾個注意點往核。首先在早期modalPresentationStyle的屬性是賦給presenting VC的,但后來都統(tǒng)一賦給presented VC嚷节,這個邏輯也很正確聂儒,這種需求往往是跟著presented VC走的。
其次是硫痰,modalPresentationStyle賦值的時機很重要衩婚,要在present事件之前賦值。因此不要在viewDidLoad里面修改modalPresentationStyle效斑,而在初始化方法里修改非春。storyboard則要在required init?(coder aDecoder: NSCoder)中修改。


最終效果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市奇昙,隨后出現(xiàn)的幾起案子护侮,更是在濱河造成了極大的恐慌,老刑警劉巖储耐,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羊初,死亡現(xiàn)場離奇詭異,居然都是意外死亡什湘,警方通過查閱死者的電腦和手機凳忙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來禽炬,“玉大人涧卵,你說我怎么就攤上這事「辜猓” “怎么了柳恐?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長热幔。 經(jīng)常有香客問我乐设,道長,這世上最難降的妖魔是什么绎巨? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任近尚,我火速辦了婚禮,結(jié)果婚禮上场勤,老公的妹妹穿的比我還像新娘戈锻。我一直安慰自己,他們只是感情好和媳,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布格遭。 她就那樣靜靜地躺著,像睡著了一般留瞳。 火紅的嫁衣襯著肌膚如雪拒迅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天她倘,我揣著相機與錄音璧微,去河邊找鬼。 笑死硬梁,一個胖子當(dāng)著我的面吹牛前硫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播靶溜,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼开瞭,長吁一口氣:“原來是場噩夢啊……” “哼懒震!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嗤详,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤个扰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后葱色,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體递宅,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年苍狰,在試婚紗的時候發(fā)現(xiàn)自己被綠了办龄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡淋昭,死狀恐怖俐填,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翔忽,我是刑警寧澤英融,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站歇式,受9級特大地震影響驶悟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜材失,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一痕鳍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧龙巨,春花似錦笼呆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耘眨。三九已至昼榛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剔难,已是汗流浹背胆屿。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留偶宫,地道東北人非迹。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像纯趋,于是被迫代替她去往敵國和親憎兽。 傳聞我的和親對象是個殘疾皇子冷离,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容