// // XWInteractiveTransition.h // XWTransitionDemo // // Created by wazrx on 16/6/10. // Copyright © 2016年 wazrx. All rights reserved. // 手势转场管理者 // 注意:使用UIViewController+XWTransition相关API配合animator,通常情况下无需自己创建手势过渡管理者 #import <UIKit/UIKit.h> @class XWInteractiveTransition; NS_ASSUME_NONNULL_BEGIN /**手势转场时的代理事件,animator默认为为其手势的代理,复写对应的代理事件可处理一些手势失败闪烁的情况*/ @protocol XWInteractiveTransitionDelegate <NSObject> @optional /**手势转场即将开始时调用*/ - (void)xw_interactiveTransitionWillBegin:(XWInteractiveTransition *)interactiveTransition; /**手势转场中调用*/ - (void)xw_interactiveTransition:(XWInteractiveTransition *)interactiveTransition isUpdating:(CGFloat)percent; /**如果开始了转场手势timer,会在松开手指,timer开始的时候调用*/ - (void)xw_interactiveTransitionWillBeginTimerAnimation:(XWInteractiveTransition *)interactiveTransition; /**手势转场结束的时候调用*/ - (void)xw_interactiveTransition:(XWInteractiveTransition *)interactiveTransition willEndWithSuccessFlag:(BOOL)flag percent:(CGFloat)percent; @end /**手势转场方向*/ typedef NS_ENUM(NSUInteger, XWInteractiveTransitionGestureDirection) { XWInteractiveTransitionGestureDirectionLeft = 0, XWInteractiveTransitionGestureDirectionRight, XWInteractiveTransitionGestureDirectionUp, XWInteractiveTransitionGestureDirectionDown }; @interface XWInteractiveTransition : UIPercentDrivenInteractiveTransition @property (nonatomic, assign, readonly) BOOL interation; @property (nonatomic, assign) BOOL timerEable; @property (nonatomic, weak) id<XWInteractiveTransitionDelegate> delegate; /**设置该值可改变计算手势百分比的基准,手势基准的原理:百分比 = 拖动距离 / panRatioBaseValue, 默认情况下水平方向panRatioBaseValue为手势所在view的宽度,垂直方向为手势所在view的高度,通常无需更改该值,在某些特殊情况下,如果想要调整手势的速率可以更改该值,比如让手势速率加倍,可以调整该值为view宽度高度的一半*/ @property (nonatomic, assign) CGFloat panRatioBaseValue; + (instancetype)xw_interactiveTransitionWithDirection:(XWInteractiveTransitionGestureDirection)direction config:(void(^)(CGPoint startPoint))config edgeSpacing:(CGFloat)edgeSpacing; - (void)xw_addPanGestureForView:(UIView *)view to:(BOOL)flag; @end NS_ASSUME_NONNULL_END