動畫的代理方法使用的 和 動畫結束不會回覆原來的樣子

1.動畫結束後保持 狀態      android

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

    [androidOutSecondAnimation setFromValue:@1.0];spa

    [androidOutSecondAnimation setToValue:@0.0];代理

    [androidOutSecondAnimation setDuration:0.3f];code

    /*************************************/orm

    //這個 兩句是 動畫保持 狀態的 關鍵語句rem

    androidOutSecondAnimation.removedOnCompletion = NO;  字符串

    androidOutSecondAnimation.fillMode = kCAFillModeForwards;get

   /*************************************/animation

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

           }

       }

相關文章
相關標籤/搜索