轉場動畫
iOS7推出了新的轉場動畫API,以協id<UIViewControllerInterativeTransition>、id<UIViewAnimatedTransitioning>方式開放給開發者。但是由于其復雜的API及繁瑣的實現方式,使眾多的開發者望而止步。
這里我封裝了幾種常見的轉場動畫,簡化的使用方式,可以直接用cocoapod搜索
WTKTransitionAnimate
,導入即可.pod搜索結果
使用方法
導入#import <WTKTransition.h>
self.navigationController.delegate = [WTKTransition shareManager];
[WTKTransition shareManager].animationType = WTKAnimateTypeKuGou;
只需要把navigationController的代理設置為WTKTransition的單例對象即可,animationType為動畫類型,如下
typedef NS_ENUM(NSInteger,WTKAnimateType)
{
WTKAnimateTypeDefault = 0,
/// 兩個導航欄不一致
WTKAnimateTypeDiffNavi,
///仿酷狗
WTKAnimateTypeKuGou,
///圓形遮罩
WTKAnimateTypeRound,
///橢圓遮罩
WTKAnimateTypeOval,
///仿斗魚
WTKAnimateTypeDouYu,
};
實現過程
在單例對象實現了轉場動畫的兩個代理方法,使用工廠模式根據animateType創建子類,在子類中實現具體的動畫。動畫的可交互屬性則是通過UIPercentDrivenInteractiveTransition來實現,需要在viewController.view上面添加拖動手勢,根據手勢來改變UIPercentDrivenInteractiveTransition的動畫狀態,一般的都是在父類的viewController添加手勢,這里為了簡化使用,使用類別實現,利用runtime給viewController關聯屬性,并且攔截viewDidload方法,在viewDidLoad中添加返回手勢
WTKAnimateTypeRound
這個動畫,圓心每次都在點擊的坐標,實現方式為獲取每次點擊的坐標,然后把這個坐標設置為下次push的圓心。獲取坐標方式有兩種
- 1、繼承Appdelegate,然后實現Appdelegate的sendEvent方法,通過Event獲取坐標。
- 2、使用類別,通過runtime攔截sendEvent方法,然后通過Event獲取坐標。
為了簡化WTKTransitionAnimation的使用方法,這里通過類別來實現。
另外,當側滑返回取消時,會發送一個通知WTK_CANCEL_POP
代碼連接git連接
自定義轉場動畫具體實現自定義轉場動畫