项目记录——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) {
            …………
        }];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,147评论 5 13
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,573评论 6 30
  • 在iOS实际开发中常用的动画无非是以下四种:UIView动画,核心动画,帧动画,自定义转场动画。 1.UIView...
    请叫我周小帅阅读 3,169评论 1 23
  • 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你...
    Yiart阅读 3,884评论 3 34
  • 先看看CAAnimation动画的继承结构 CAAnimation{ CAPropertyAnimation { ...
    时间不会倒着走阅读 1,694评论 0 1