一行代碼實現(xiàn)iOS自定義轉(zhuǎn)場動畫

前言

在平時的開發(fā)中省撑,我們進行界面跳轉(zhuǎn)時一般都是采用系統(tǒng)默認(rèn)的轉(zhuǎn)場動畫(Push 和 Present),iOS7之后,蘋果開放了相關(guān)API,讓我們可以自定義轉(zhuǎn)場動畫翰铡,讓APP更有活力饵溅。本文將介紹我的一個開源項目一個自定義轉(zhuǎn)場動畫庫WXSTransition的使用以及部分原理妨退,通過這個庫,一行代碼便可以實現(xiàn)轉(zhuǎn)場動畫蜕企,簡單易用咬荷,同時也支持多個屬性修改,能靈活擴展轻掩。

之前寫了相關(guān)介紹的文章一行代碼實現(xiàn)自定義轉(zhuǎn)場動畫--iOS自定義轉(zhuǎn)場動畫集介紹第一個版本的WXSTransition幸乒,經(jīng)過一段時間的優(yōu)化更新,WXSTransition做了一些改變也添加了一些新的東西,如:支持手勢返回以及新動畫效果

正文

1唇牧、動畫效果

2罕扎、使用方法

3、手勢返回

1丐重、動畫效果

跟之前版本相比腔召,添加了一些新動畫,下面是部分效果圖:



2弥臼、使用方法

一行代碼就可以調(diào)用

Push:

[self.navigationController wxs_pushViewController:[[SecondViewController alloc] init] animationType:WXSTransitionAnimationTypePageTransition];

Present:

[self wxs_presentViewController:[[PresentViewController alloc] init] animationType:WXSTransitionAnimationTypePageTransition? completion:nil];

其中WXSTransitionAnimationTypePageTransition是動畫類型宴咧,可以通過更改這里選擇不同類型的動畫。

如果想要修改動畫時間等屬性可以通過以下方法進行修改:

[self.navigationController wxs_pushViewController:vc makeTransition:^(WXSTransitionProperty *transition) {

transition.animationType =? WXSTransitionAnimationTypePointSpreadPresent;

transition.animationTime = 1;

transition.backGestureEnable = NO;

transition.startView = cell.contentView;

}];

相比較與之前的版本径缅,添加了startView和targetView兩個屬性掺栅,讓使用方法更為統(tǒng)一烙肺。

所有可以更改的屬性在WXSTransitionProperty中可以看到。

/**

*? 轉(zhuǎn)場動畫時間

*? transitiion animation time

*/@property (nonatomic,assign) NSTimeInterval animationTime;/**

*? 轉(zhuǎn)場方式 :push,pop,present,dismiss

*? transitiion type :push,pop,present,dismiss

*/@property (nonatomic,assign) WXSTransitionType transitionType;/**

*? 轉(zhuǎn)場動畫類型

*? transitiion animation type

*/@property (nonatomic,assign) WXSTransitionAnimationType animationType;/**

*? 是否采用系統(tǒng)原生返回方式

*? set YES to make back action of systerm

*/@property (nonatomic,assign) BOOL isSysBackAnimation;/**

*? 是否通過手勢返回

*? set YES to enable gesture for back

*/@property (nonatomic,assign) BOOL backGestureEnable;/**

*? 返回上個界面的手勢 默認(rèn):右滑 :WXSGestureTypePanRight

*? choose type of gesture for back , default : WXSGestureTypePanRight

*/@property (nonatomic,assign) WXSGestureType backGestureType;/**

*? View move 等動畫中指定的起始視圖

*

*/@property (nonatomic, strong) UIView? ? *startView;/**

*? View move 等動畫中指定的結(jié)束視圖

*/@property (nonatomic, strong) UIView? ? *targetView;

3氧卧、手勢返回

手勢返回是一個新加的比較重要的功能桃笙。效果圖如下:

現(xiàn)在支持左滑、上滑沙绝、下滑搏明、右滑四種手勢進行返回,可以通過backGestureType屬性修改闪檬。

原理:

(1)星著、首先要通過一個實現(xiàn)UIViewControllerInteractiveTransitioning協(xié)議的類----WXSPercentDrivenInteractiveTransition來控制手勢和動畫的進度。

(2)粗悯、當(dāng)手離開屏幕虚循,手勢結(jié)束時,轉(zhuǎn)場動畫需要繼續(xù)样傍,這個時候通過CADisplayLink來完成剩下的動畫横缔。

具體的實現(xiàn)方法可以到源碼中WXSTransition看看,后續(xù)我也會抽時間寫一篇詳細(xì)的介紹衫哥。

后語

這個版本除了以上變化外茎刚,還進行了代碼結(jié)構(gòu)的修改優(yōu)化,也解決了一些Bug撤逢,例如delegate沖突等膛锭,在這里感謝一下熱心提Bug的同學(xué),以后還是希望有更多的技術(shù)交流蚊荣,有興趣的同學(xué)可以到WXSTransitionClone下來看看泉沾,覺得有所幫助的同學(xué)麻煩給個Star.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妇押,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌姓迅,老刑警劉巖敲霍,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丁存,居然都是意外死亡肩杈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門解寝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扩然,“玉大人,你說我怎么就攤上這事聋伦》蚺迹” “怎么了界睁?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長兵拢。 經(jīng)常有香客問我翻斟,道長,這世上最難降的妖魔是什么说铃? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任访惜,我火速辦了婚禮,結(jié)果婚禮上腻扇,老公的妹妹穿的比我還像新娘债热。我一直安慰自己,他們只是感情好幼苛,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布窒篱。 她就那樣靜靜地躺著,像睡著了一般蚓峦。 火紅的嫁衣襯著肌膚如雪舌剂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天暑椰,我揣著相機與錄音霍转,去河邊找鬼。 笑死一汽,一個胖子當(dāng)著我的面吹牛避消,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播召夹,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼岩喷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了监憎?” 一聲冷哼從身側(cè)響起纱意,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鲸阔,沒想到半個月后偷霉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡褐筛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年类少,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渔扎。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡硫狞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情残吩,我是刑警寧澤财忽,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站世剖,受9級特大地震影響定罢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旁瘫,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一祖凫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酬凳,春花似錦惠况、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翎苫,卻和暖如春权埠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背煎谍。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工攘蔽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呐粘。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓满俗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親作岖。 傳聞我的和親對象是個殘疾皇子唆垃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

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