1.modal模式到下一個控制器
1.1默認情況下model到下一個控制器,上一個控制器就被頂替了日麸,但是
如果要做彈框效果(彈框為控制器),設(shè)置代理并且告訴modal類型為自定義,這時候就不會頂替掉上一個控制器
1.2 ?ios8負責轉(zhuǎn)場動畫的
這個就是它的代理方法,因為返回值為UIPresentationController,所以如果要改變他的大小以及模式源织,我會選擇繼承這個控制器,自定義一個控制器
這個是我自定義的控制器微猖,并在控制器里面必須要寫的init方法
這時候presentedView的尺寸已經(jīng)設(shè)置完畢谈息,但是它是加在containerView上 的,而它的尺寸是全屏凛剥,如果你要實現(xiàn)消失這個試圖的話侠仇,還需要在這個containerView上設(shè)置一個view(蒙版),并且放到你呈現(xiàn)的試圖presentedView后邊
這樣就可以實現(xiàn)讓視圖消失
1.3然后讓返回值為這個控制器犁珠,這時候一切已經(jīng)ok
1.4如果你要設(shè)置自己的modal模式為出現(xiàn)的時候自上向下推出逻炊,消失的時候自下向上消失
注意:動畫完成之后transitionContext.compeleteTransition(true),這句話一定要寫犁享。因為如果不寫余素,會出現(xiàn)一些未知錯誤,既不報錯炊昆,又不崩潰桨吊,就是返回有問題
這時候動畫已經(jīng)做完但是沒有效果威根,我靠,怎么回事视乐。 ?因為只要實現(xiàn)了這些代理方法洛搀,系統(tǒng)的默認動畫就沒有了,所有東西需要程序員自己完成
所以需要我們自己把toview加到容器里
這時候會展現(xiàn)出來佑淀,但是一點留美,它是從中間展開的,而我想要的是從頭展開渣聚,這時候就需要設(shè)置錨點独榴,因為默認錨點是0.5,0.5
這個時候展現(xiàn)已經(jīng)完成奕枝,同時下面來處理消失,同樣用transform來讓它壓縮為0
思路:1.需要設(shè)置個全局屬性瓶堕,但是分類不能添加
2.每次點擊展現(xiàn)隘道,消失,都會走代理方法中郎笆,是誰負責展現(xiàn)谭梗,是誰負責消失
3.在方法中判斷是展開還是消失
1.
2.
3.在這個方法中判斷動畫是展現(xiàn)還是關(guān)閉
關(guān)閉部分如下:
注意:由于CGFloat是不準確的,所以如果寫0宛蚓。0會沒有動畫激捏,所以直接0.000001就ok
到此自定義轉(zhuǎn)場的動畫就已經(jīng)over