美文网首页
UIView Animation

UIView Animation

作者: CNjacob | 来源:发表于2017-06-22 15:43 被阅读0次
    1. UIView类方法动画
    /**
     标志动画开始,开始编辑动画
     
     @param animationID 动画的唯一标示
     @param context 附加参数
     */
    + (void)beginAnimations:(nullable NSString *)animationID
                    context:(nullable void *)context;
    
    
    /**
     标志动画结束,开始执行动画
     */
    + (void)commitAnimations;
    
    
    /**
     设置动画时长
     
     @param duration duration description
     */
    + (void)setAnimationDuration:(NSTimeInterval)duration;
    
    
    /**
     设置代理
     
     @param delegate delegate description
     */
    + (void)setAnimationDelegate:(nullable id)delegate;
    
    
    /**
     动画将要开始时执行的方法
     
     @param selector selector description
     */
    + (void)setAnimationWillStartSelector:(nullable SEL)selector;
    
    
    /**
     动画已经结束时执行的方法
     
     @param selector selector description
     */
    + (void)setAnimationDidStopSelector:(nullable SEL)selector;
    
    
    /**
     设置动画执行延时时间
     
     @param delay delay description
     */
    + (void)setAnimationDelay:(NSTimeInterval)delay;
    
    
    /**
     设置动画开始的Date
     
     @param startDate startDate description
     */
    + (void)setAnimationStartDate:(NSDate *)startDate;
    
    
    /**
     设置动画效果
     
     @param curve curve description
     
     typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
     UIViewAnimationCurveEaseInOut,         // 慢入慢出
     UIViewAnimationCurveEaseIn,            // 慢入
     UIViewAnimationCurveEaseOut,           // 慢出
     UIViewAnimationCurveLinear,            // 线性匀速
     };
     */
    + (void)setAnimationCurve:(UIViewAnimationCurve)curve;
    
    
    /**
     动画重复次数
     
     @param repeatCount repeatCount description
     */
    + (void)setAnimationRepeatCount:(float)repeatCount;
    
    
    /**
     设置动画是否继续执行反相动画
     
     @param repeatAutoreverses repeatAutoreverses description
     */
    + (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses;
    
    
    /**
     设置是否从当前状态开始动画
     
     @param fromCurrentState fromCurrentState description
     
     当一个动画尚未完成,将要进行下一个动画时:
     如果设置为YES,动画将从上一个动画当前的状态进行下一个动画
     如果设置为NO,那当前动画会立即结束,达到当前动画的最终状态,再执行下一个动画
     */
    + (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState;
    
    
    /**
     设置试图过渡效果
     
     @param transition 动画效果
     @param view 添加动画效果的View
     @param cache 是否使用视图缓存,YES:视图在开始和结束时渲染一次;NO:视图在每一帧都渲染
     
     typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
     UIViewAnimationTransitionNone,             // 不使用动画
     UIViewAnimationTransitionFlipFromLeft,     // 从左向右旋转翻页
     UIViewAnimationTransitionFlipFromRight,    // 从右向左旋转翻页
     UIViewAnimationTransitionCurlUp,           // 从下往上卷曲翻页
     UIViewAnimationTransitionCurlDown,         // 从上往下卷曲翻页
     };
     
     */
    + (void)setAnimationTransition:(UIViewAnimationTransition)transition
                           forView:(UIView *)view
                             cache:(BOOL)cache;
    
    
    /**
     是否禁用动画效果(对象的属性会被改变,只是没有动画效果)
     
     @param enabled enabled description
     */
    + (void)setAnimationsEnabled:(BOOL)enabled;
    
    2. UIView block动画
    /**
     简单的动画方法
     
     @param duration 动画时长
     @param animations 需要执行的动画block
     */
    + (void)animateWithDuration:(NSTimeInterval)duration
                     animations:(void (^)(void))animations;
    
    
    /**
     带有完成回调的动画方法
     
     @param duration 动画时长
     @param animations 需要执行的动画block
     @param completion 动画完成后需要执行的block
     */
    + (void)animateWithDuration:(NSTimeInterval)duration
                     animations:(void (^)(void))animations
                     completion:(void (^ __nullable)(BOOL finished))completion;
    
    
    /**
     带有延时和可选择动画效果的动画方法
     
     @param duration 动画时长
     @param delay 延时时长
     @param options 动画效果(枚举类型值,具体效果参考系统系统枚举)
     @param animations 需要执行的动画block
     @param completion 动画完成后需要执行的block
     */
    + (void)animateWithDuration:(NSTimeInterval)duration
                          delay:(NSTimeInterval)delay
                        options:(UIViewAnimationOptions)options
                     animations:(void (^)(void))animations
                     completion:(void (^ __nullable)(BOOL finished))completion;
    
    
    /**
     spring动画方法
     
     @param duration 动画时长
     @param delay 延时时长
     @param dampingRatio 震动效果,范围0~1,数值越小震动效果越明显
     @param velocity 初始速度,数值越大初始速度越快
     @param options 动画效果(枚举类型值,具体效果参考系统系统枚举)
     @param animations 需要执行的动画block
     @param completion 动画完成后需要执行的block
     */
    + (void)animateWithDuration:(NSTimeInterval)duration
                          delay:(NSTimeInterval)delay
         usingSpringWithDamping:(CGFloat)dampingRatio
          initialSpringVelocity:(CGFloat)velocity
                        options:(UIViewAnimationOptions)options
                     animations:(void (^)(void))animations
                     completion:(void (^ __nullable)(BOOL finished))completion;
    
    
    /**
     两个视图切换的转场动画方法
     
     @param fromView fromView description
     @param toView toView description
     @param duration 动画时长
     @param options 动画效果(枚举类型值,具体效果参考系统系统枚举)
     @param completion 动画完成后需要执行的block
     
     在该动画过程中,fromView 会从父视图中移除,并讲 toView 添加到父视图中,
     注意转场动画的作用对象是父视图。
     */
    + (void)transitionFromView:(UIView *)fromView
                        toView:(UIView *)toView
                      duration:(NSTimeInterval)duration
                       options:(UIViewAnimationOptions)options
                    completion:(void (^ __nullable)(BOOL finished))completion;
    
    
    /**
     单个视图转场效果动画方法
     
     @param view view description
     @param duration 动画时长
     @param options 动画效果(枚举类型值,具体效果参考系统系统枚举)
     @param animations 需要执行的动画block
     @param completion 动画完成后需要执行的block
     */
    + (void)transitionWithView:(UIView *)view
                      duration:(NSTimeInterval)duration
                       options:(UIViewAnimationOptions)options
                    animations:(void (^ __nullable)(void))animations
                    completion:(void (^ __nullable)(BOOL finished))completion;
    
    
    /**
     关键帧(keyFrame)动画
     
     @param duration 动画时长
     @param delay 延时时长
     @param options 动画效果(枚举类型值,具体效果参考系统系统枚举)
     @param animations 需要执行的动画block
     @param completion 动画完成后需要执行的block
     */
    + (void)animateKeyframesWithDuration:(NSTimeInterval)duration
                                   delay:(NSTimeInterval)delay
                                 options:(UIViewKeyframeAnimationOptions)options
                              animations:(void (^)(void))animations
                              completion:(void (^ __nullable)(BOOL finished))completion;
    
    //其中需要注意的是添加关键帧的方法:
    /**
     添加关键帧的方法
     
     @param frameStartTime 动画开始的时间(数值为占总时间的比例)
     @param frameDuration 动画持续时间(数值为占总时间的比例)
     @param animations 需要执行的动画block
     */
    + (void)addKeyframeWithRelativeStartTime:(double)frameStartTime
                            relativeDuration:(double)frameDuration
                                  animations:(void (^)(void))animations;
    
    3. 关于options参数

    3.1 UIViewAnimationOptions

    UIViewAnimationOptionLayoutSubviews            //进行动画时布局子控件
    UIViewAnimationOptionAllowUserInteraction      //进行动画时允许用户交互
    UIViewAnimationOptionBeginFromCurrentState     //从当前状态开始动画
    UIViewAnimationOptionRepeat                    //无限重复执行动画
    UIViewAnimationOptionAutoreverse               //执行动画回路
    UIViewAnimationOptionOverrideInheritedDuration //忽略嵌套动画的执行时间设置
    UIViewAnimationOptionOverrideInheritedCurve    //忽略嵌套动画的曲线设置
    UIViewAnimationOptionAllowAnimatedContent      //转场:进行动画时重绘视图
    UIViewAnimationOptionShowHideTransitionViews   //转场:移除(添加和移除图层的)动画效果
    UIViewAnimationOptionOverrideInheritedOptions  //不继承父动画设置
    UIViewAnimationOptionCurveEaseInOut            //时间曲线,慢进慢出(默认值)
    UIViewAnimationOptionCurveEaseIn               //时间曲线,慢进
    UIViewAnimationOptionCurveEaseOut              //时间曲线,慢出
    UIViewAnimationOptionCurveLinear               //时间曲线,匀速
    UIViewAnimationOptionTransitionNone            //转场,不使用动画
    UIViewAnimationOptionTransitionFlipFromLeft    //转场,从左向右旋转翻页
    UIViewAnimationOptionTransitionFlipFromRight   //转场,从右向左旋转翻页
    UIViewAnimationOptionTransitionCurlUp          //转场,下往上卷曲翻页
    UIViewAnimationOptionTransitionCurlDown        //转场,从上往下卷曲翻页
    UIViewAnimationOptionTransitionCrossDissolve   //转场,交叉消失和出现
    UIViewAnimationOptionTransitionFlipFromTop     //转场,从上向下旋转翻页
    UIViewAnimationOptionTransitionFlipFromBottom  //转场,从下向上旋转翻页
    

    3.2 UIViewKeyframeAnimationOptions

    UIViewKeyframeAnimationOptionLayoutSubviews           //进行动画时布局子控件
    UIViewKeyframeAnimationOptionAllowUserInteraction     //进行动画时允许用户交互
    UIViewKeyframeAnimationOptionBeginFromCurrentState    //从当前状态开始动画
    UIViewKeyframeAnimationOptionRepeat                   //无限重复执行动画
    UIViewKeyframeAnimationOptionAutoreverse              //执行动画回路
    UIViewKeyframeAnimationOptionOverrideInheritedDuration //忽略嵌套动画的执行时间设置
    UIViewKeyframeAnimationOptionOverrideInheritedOptions //不继承父动画设置
    UIViewKeyframeAnimationOptionCalculationModeLinear     //运算模式 :连续
    UIViewKeyframeAnimationOptionCalculationModeDiscrete   //运算模式 :离散
    UIViewKeyframeAnimationOptionCalculationModePaced      //运算模式 :均匀执行
    UIViewKeyframeAnimationOptionCalculationModeCubic      //运算模式 :平滑
    UIViewKeyframeAnimationOptionCalculationModeCubicPaced //运算模式 :平滑均匀
    

    参考文章:http://www.jianshu.com/p/80c2bef6dbe5

    相关文章

      网友评论

          本文标题:UIView Animation

          本文链接:https://www.haomeiwen.com/subject/dqsfcxtx.html