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];

               }

           }

  • 相关阅读:
    hdu 2222 Keywords Search
    Meet and Greet
    hdu 4673
    hdu 4768
    hdu 4747 Mex
    uva 1513 Movie collection
    uva 12299 RMQ with Shifts
    uva 11732 strcmp() Anyone?
    uva 1401
    hdu 1251 统计难题
  • 原文地址:https://www.cnblogs.com/zhaozhongpeng/p/4976783.html
Copyright © 2011-2022 走看看