您的位置:首页 > 其它

动画的代理方法使用的 和 动画结束不会回复原来的样子

2015-11-19 10:20 316 查看
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];

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: