zoukankan      html  css  js  c++  java
  • 动画的代理方法使用的 和 动画结束不会回复原来的样子

    1.动画结束后保持 状态      

        CABasicAnimation *androidOutSecondAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

        [androidOutSecondAnimation setFromValue:@1.0];

        [androidOutSecondAnimation setToValue:@0.0];

        [androidOutSecondAnimation setDuration:0.3f];

        /*************************************/

        //这个 两句是 动画保持 状态的 关键语句

        androidOutSecondAnimation.removedOnCompletion = NO;  

        androidOutSecondAnimation.fillMode = kCAFillModeForwards;

       /*************************************/

        [androidOutSecondAnimation setValue:@"zzpAndiordOutSecondFade" forKey:@"zzpFade"];

        [_zzpAndiordAlertBG.layer addAnimation:androidOutSecondAnimation forKey:@"scaleFrist"];

    2.动画的代理方法 通过 key来区分 不同的 动画

       一.通过KVO方法的获取原来的值 --- 通过比较值是否相等

       ** 创建动画 并给关键字赋值   

            CATransition *ComeAnimation = [CATransition animation];

            ComeAnimation.duration = 0.2f;

            ComeAnimation.timingFunction = UIViewAnimationCurveEaseInOut;

            ComeAnimation.fillMode = kCAFillModeForwards;

            ComeAnimation.type = kCATransitionReveal;

            ComeAnimation.subtype = kCATransitionFade;

            ComeAnimation.delegate = self;

            ComeAnimation.removedOnCompletion = YES;

            //这个句话就是给 自己设置的关键字 赋值    这个key (也就是@"zzpFade" 位置的 字符串)全部  一样    而Vlaue(也就是    

               @"zzpBGComeFade" 位置的 字符串) 这个值必须 全部  不一样           

            [ComeAnimation setValue:@"zzpBGComeFade" forKey:@"zzpFade"];

            [_BGView.layer addAnimation:ComeAnimation forKey:@"halfAlphaBG"];

       ** 在代理方法中通过以下方法 区分动画    其中zzpBGComeFade 是在实例化动画是 自己定义的值

            NSString *TargetType = [anim valueForKey:@"zzpFade"];

            if ([TargetType isEqualToString:@"zzpBGComeFade"]) {

               if (flag) {

                   NSLog(@"类似于系统的警示框 come -- 动画结束");

               }

           }

        二.通过layer 上动画的关键字  找到动画并且和代理的回调的动画进行比较

        CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

        [animation setFromValue:@1.0];

        [animation setToValue:@(1.7/2.5)];

        [animation setDuration:0.5f];

        animation.delegate = self;

        animation.removedOnCompletion = NO;

        animation.fillMode = kCAFillModeForwards;

        **给动画设置关键字

        [_QRcodeImageSecond.layer addAnimation:animation forKey:@"SecondScale"];

        ** 区分动画

         if (anim == [_QRcodeImageFrist.layer animationForKey:@"FristScale"]) {

               if (flag) {

                   _QRcodeImageFrist.userInteractionEnabled = YES;

                   _QRcodeImageSecond.hidden = NO;

                   _QRcodeImageFrist.hidden = YES;

                   [_QRcodeImageFrist.layer removeAllAnimations];

               }

           }

  • 相关阅读:
    记录一下过孔和通孔焊盘
    资料分享
    oracle 配置服务端
    oracle 安装
    jquery之遍历展示title
    jquery之radio
    java基础之正则表达式
    java基础之IO流
    java基础之泛型
    java基础之反射
  • 原文地址:https://www.cnblogs.com/zhaozhongpeng/p/4976783.html
Copyright © 2011-2022 走看看