iOS 兩行代碼實現自定義轉場動畫

轉場動畫

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連接
自定義轉場動畫具體實現自定義轉場動畫

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,200評論 4 61
  • 概述 這篇文章,我將講述幾種轉場動畫的自定義方式,并且每種方式附上一個示例,畢竟代碼才是我們的語言,這樣比較容易上...
    伯恩的遺產閱讀 54,022評論 37 381
  • 因為同性戀的傳聞關注過李銀河,得知王小波是她丈夫。后來讀王小波的書忘記他是結婚的人,百度一下,恍然大悟,原來李銀河...
    舒心來嘮嘮嗑閱讀 189評論 0 1
  • 三月十號交培養手冊加400小時音頻 三月十一號省考 三月十三號交論文初稿 然后校內盲審院內盲審 找工作 改論文 答...
    綿云瑪奇朵牌小居居閱讀 144評論 0 0
  • 高考結束后,又一批兩耳不聞窗外事,一心只讀圣賢書,天天走讀住家的單純少年,告別父母,背上行囊,踏入大學校園,走進宿...
    阿好在德國閱讀 586評論 3 3