前言
之前寫的一個轉(zhuǎn)場動畫庫WXSTransition受到挺多開發(fā)者喜歡的。但是也存在著一些各種各樣的問題,最近抽出一些時間對WXSTransition存在的一些問題進(jìn)行修復(fù)。
其中比較明顯的問題是在轉(zhuǎn)場動畫過程中,導(dǎo)航欄的存在讓動畫看起來不夠順暢,自然。導(dǎo)航欄的使用頻率很高,所以這是一個比較大的問題。
解決
發(fā)現(xiàn)這個問題的第一個想法是要讓導(dǎo)航欄做相應(yīng)的動畫,但是在實踐過程中發(fā)現(xiàn),確實有挺多坑,一個是導(dǎo)航欄相關(guān)API比較少,一個是要進(jìn)行相對應(yīng)的動畫比較吃力不討好。
最后采用一個性價比比較高的方案,在適合的時機(jī)隱藏、顯示導(dǎo)航欄。
在- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext
方法隱藏
在- (void)animationEnded:(BOOL) transitionCompleted
方法中顯示。
效果如圖:
fragment.gif
spread.gif
viewMove.gif
其實在網(wǎng)上可以看到許多對轉(zhuǎn)場過程中對導(dǎo)航欄的處理,可以根據(jù)自身的需求參照網(wǎng)上的方法進(jìn)行導(dǎo)航欄自定義動畫,例如漸變等。為了不與自定義動畫沖突,我加上了autoShowAndHideNavBar
屬性,將其設(shè)置為NO時邊不會自動隱藏,顯示,就不會與自定義動畫沖突。
代碼在我的Github上WXSTransion