定製轉場動畫ControllerTransitionAnimation
定製轉場動畫ControllerTransitionAnimation
說明
控制器轉場動畫的實現晦澀難懂,本人僅在這裡實現了非實時(不支援邊緣拖拽手勢)的轉場動畫效果,支援實時轉換的轉場動畫還在研究當中.
效果
原始碼
https://github.com/YouXianMing/ControllerTransitionAnimation
//
// VirtualAnimator.h
// Transition
//
// Created by YouXianMing on 15/5/19.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface VirtualAnimator : NSObject <UIViewControllerAnimatedTransitioning>
/**
* 動畫執行時間(預設值為0.5s)
*/
@property (nonatomic) NSTimeInterval transitionDuration;
/**
* <建議此方法用子類過載實現來設定時間>
*
* 設定轉場動畫持續時間
*
* @param transitionContext 操作控制程式碼
*
* @return 設定的時間
*/
- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext;
/**
* <此方法必須由子類過載實現>
*
* 轉場動畫實現
*
* @param transitionContext 操作控制程式碼
*/
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext;
/**
* 獲取fromViewController的view
*
* @param transitionContext 操作控制程式碼
*
* @return fromViewController的view
*/
- (UIView *)currentViewWith:(id <UIViewControllerContextTransitioning>)transitionContext;
/**
* 獲取toViewController的view
*
* @param transitionContext 操作控制程式碼
*
* @return toViewController的view
*/
- (UIView *)toViewWith:(id <UIViewControllerContextTransitioning>)transitionContext;
/**
* 獲取fromViewController
*
* @param transitionContext 操作控制程式碼
*
* @return fromViewController
*/
- (UIViewController *)currentViewControllerWith:(id <UIViewControllerContextTransitioning>)transitionContext;
/**
* 獲取toViewController
*
* @param transitionContext 操作控制程式碼
*
* @return toViewController
*/
- (UIViewController *)toViewControllerWith:(id <UIViewControllerContextTransitioning>)transitionContext;
/**
* 轉場動畫完成
*/
- (void)transitionCompleteWith:(id <UIViewControllerContextTransitioning>)transitionContext;
@end
//
// VirtualAnimator.m
// Transition
//
// Created by YouXianMing on 15/5/19.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
//
#import "VirtualAnimator.h"
@implementation VirtualAnimator
- (instancetype)init {
self = [super init];
if (self) {
// 預設引數設定
[self deafultSet];
}
return self;
}
- (void)deafultSet {
_transitionDuration = 0.5f;
}
- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext {
return _transitionDuration;
}
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext {
}
- (UIView *)currentViewWith:(id <UIViewControllerContextTransitioning>)transitionContext {
return [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey].view;
}
- (UIView *)toViewWith:(id <UIViewControllerContextTransitioning>)transitionContext {
return [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey].view;
}
- (UIViewController *)currentViewControllerWith:(id <UIViewControllerContextTransitioning>)transitionContext {
return [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
}
- (UIViewController *)toViewControllerWith:(id <UIViewControllerContextTransitioning>)transitionContext {
return [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
}
- (void)transitionCompleteWith:(id <UIViewControllerContextTransitioning>)transitionContext {
[transitionContext completeTransition:YES];
}
@end
特點
- 分離出
present
與dissmiss
的動畫效果 - 繼承抽象父類
VirtualAnimator
來實現特定動畫的功能,便於解耦 - 簡單易懂
核心
相關文章
- Android 轉場動畫Android動畫
- iOS偽轉場動畫iOS動畫
- iOS自定義轉場動畫(push、pop動畫)iOS動畫
- TransitionAnimation自定義轉場動畫NaN動畫
- 自定義轉場動畫(二)動畫
- 自定義轉場動畫(一)動畫
- Android轉場動畫一說Android動畫
- 鴻蒙HarmonyOS實戰-ArkUI動畫(頁面轉場動畫)鴻蒙UI動畫
- 鴻蒙HarmonyO實戰-ArkUI動畫(元件內轉場動畫)鴻蒙UI動畫元件
- 直播電商原始碼,android設定輪播圖轉場動畫特效原始碼Android動畫特效
- SpringBoot彩蛋之定製啟動畫面Spring Boot動畫
- 如何繪製三維動畫設計和製作場景更好動畫
- 一行程式碼實現自定義轉場動畫--iOS自定義轉場動畫集行程動畫iOS
- Android轉場動畫深度解析(1)Android動畫
- Android轉場動畫深度解析(2)Android動畫
- Android轉場動畫深度解析(3)Android動畫
- 高逼格Android轉場動畫,輕鬆實現掘金使用者頭像轉場動畫Android動畫
- [譯] React Native 中使用轉場動畫!React Native動畫
- Android Reveal圓形Activity轉場動畫Android動畫
- Boss直聘轉場動畫的實現動畫
- Android開發之Activity轉場動畫Android動畫
- iOS CATransform3D的轉場動畫iOSORM3D動畫
- 自定義present和dismiss的轉場動畫動畫
- 使用 Dockerfile 定製映象【轉】Docker
- 採用多執行緒製作動畫(轉)執行緒動畫
- C++模板的定製二:定製C++類 (轉)C++
- C++模板的定製一:定製函式模板 (轉)C++函式
- 動畫體系知識梳理(1) 轉場動畫 ContentTransition 理論篇動畫
- 動畫體系知識梳理(2) 轉場動畫 ContentTransition 實踐篇動畫
- C++模板的定製三:部分定製C++類 (轉)C++
- 自定義TabBar動畫效果 - 頁面轉場(Swift)tabBar動畫Swift
- 超酷炫的轉場動畫?CSS 輕鬆拿下!動畫CSS
- iOS自定義轉場動畫實戰講解iOS動畫
- iOS 動畫-定時器動畫iOS動畫定時器
- [譯] 使用 Flutter 製作 3D 翻轉動畫Flutter3D動畫
- 定製一個BitmapButton類 (轉)
- 個性定製Linux(轉)Linux
- Android 中的轉場動畫及相容處理Android動畫