项目记录——UIViewAnimation动画过程中的手势响应

UIView动画一般使用

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0); // delay = 0.0, options = 0

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations NS_AVAILABLE_IOS(4_0); // delay = 0.0, options = 0, completion = NULL

这两个方法,在动画过程中手势交互默认是关闭的。
可以使用

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);

设置options为UIViewAnimationOptionAllowUserInteraction来打开交互。

UIViewAnimationOptions是一个动画效果的枚举值,它可以影响动画的执行效果。

typedef NS_OPTIONS(NSUInteger, UIViewAnimationOptions) {
    UIViewAnimationOptionLayoutSubviews            = 1 <<  0, // 设置子视图随父视图展示动画
    UIViewAnimationOptionAllowUserInteraction      = 1 <<  1, // 允许在动画执行时用户与其进行交互
    UIViewAnimationOptionBeginFromCurrentState     = 1 <<  2, // 允许在动画执行时执行新的动画
    UIViewAnimationOptionRepeat                    = 1 <<  3, // 设置动画循环执行
    UIViewAnimationOptionAutoreverse               = 1 <<  4, // 设置动画反向执行,需要设置动画循环
    UIViewAnimationOptionOverrideInheritedDuration = 1 <<  5, // 强制动画使用内层动画的时间值
    UIViewAnimationOptionOverrideInheritedCurve    = 1 <<  6, // 强制动画使用内层动画曲线值
    UIViewAnimationOptionAllowAnimatedContent      = 1 <<  7, // 设置动画视图实时刷新
    UIViewAnimationOptionShowHideTransitionViews   = 1 <<  8, // 设置视图切换时隐藏,而不是移除
    UIViewAnimationOptionOverrideInheritedOptions  = 1 <<  9, // 这部分属性设置动画播放的线性效果
    
    UIViewAnimationOptionCurveEaseInOut            = 0 << 16, // 淡入淡出 首末减速
    UIViewAnimationOptionCurveEaseIn               = 1 << 16, // 淡入 初始减速
    UIViewAnimationOptionCurveEaseOut              = 2 << 16, // 淡出 末尾减速
    UIViewAnimationOptionCurveLinear               = 3 << 16, // 线性 匀速执行 
    
    UIViewAnimationOptionTransitionNone            = 0 << 20, // default
    UIViewAnimationOptionTransitionFlipFromLeft    = 1 << 20, // 从左边切入
    UIViewAnimationOptionTransitionFlipFromRight   = 2 << 20, // 从右边切入
    UIViewAnimationOptionTransitionCurlUp          = 3 << 20, // /从上面立体进入
    UIViewAnimationOptionTransitionCurlDown        = 4 << 20, // /从下面立体进入
    UIViewAnimationOptionTransitionCrossDissolve   = 5 << 20, // 溶解效果
    UIViewAnimationOptionTransitionFlipFromTop     = 6 << 20, // 从上面切入
    UIViewAnimationOptionTransitionFlipFromBottom  = 7 << 20, // 从下面切入
} NS_ENUM_AVAILABLE_IOS(4_0);

原谅我的渣英语,枚举值翻译摘自iOS动画开发之一——UIViewAnimation动画的使用
属性可以使用|进行多项合并。

[UIView animateWithDuration:1.8f delay:0.f options:UIViewAnimationOptionCurveEaseOut|UIViewAnimationOptionAllowUserInteraction animations:^{
            …………
        } completion:^(BOOL finished) {
            …………
        }];

你可能感兴趣的:(项目记录——UIViewAnimation动画过程中的手势响应)