动画的代理方法使用的 和 动画结束不会回复原来的样子
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];
}
}
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];
}
}
相关文章推荐
- cocoa pods
- 使用Ant给EJB项目编译、打包、发布
- Android性能优化之使用线程池处理异步任务
- github配置ssh key
- DELL T420塔式服务器RAID配置及OS安装
- JAVA MemCache 史无前例的详细讲解【转】
- 什么样的gpio才需要用can_sleep
- ROS 学习系列 -- 执行turtlebot navigation的方法
- 解决win10 phptoshop #fff纯白不是这样的白 显示器高级的问题
- windows 环境内网超快同步 DFS
- 14 款好用的 iOS 开发工具
- Unable to find valid certification path to requested target
- 二分查找
- bootstrap菜鸟教程之必须知道的bootstrap几个cdn加速点
- 绝对干货:供个人开发者赚钱免费使用的一些好的API接口
- swift-延时加载函数
- HDU ACM 1789 Doing Homework again
- 怎么在Caffe中配置每一个层的结构
- Combinations
- 为什么你的 App 没人用?请按这8条逐一对照