博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Core Animation之CABasicAnimation(基础动画)
阅读量:6786 次
发布时间:2019-06-26

本文共 2451 字,大约阅读时间需要 8 分钟。

#import "ViewController.h" @interface ViewController ()@property(nonatomic,strong)UIButton *btn;@property(nonatomic,strong)CALayer *calayer;@end @implementation ViewController - (void)viewDidLoad {    [super viewDidLoad];    self.btn=[UIButton buttonWithType:UIButtonTypeSystem];    self.btn.frame=CGRectMake(100, 100, 100, 100);    self.btn.backgroundColor=[UIColor redColor];    [self.btn setTitle:@"按钮" forState:UIControlStateNormal];    [self.btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:self.btn];}-(void)btnClick:(id)sender{             //基础动画两种实例化方式//    CABasicAnimation *basicAnimation=[CABasicAnimation animationWithKeyPath:@"transform"];    CABasicAnimation *basicAnimation=[CABasicAnimation animation];         //基础动画主要有三个属性 fromValue, toValue, byValue    //toValue到多少  byValue增加多少    basicAnimation.keyPath=@"position";         //这几个属性都是id类型,由于CGPoint是结构体类型,不能直接用,所以要转换一下下//    basicAnimation.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 100, 1)];    //图层transform属性是CATransform3D类型 不能用仿射变换 仿射变换是图层中的方法所以不能通过CABasicAnimation动画改变//    basicAnimation.toValue=[NSValue valueWithCGAffineTransform:CGAffineTransformMakeScale(2.0, 2.0)];         //位置变换    basicAnimation.fromValue=[NSValue valueWithCGPoint:CGPointMake(0, 0)];    basicAnimation.toValue=[NSValue valueWithCGPoint:CGPointMake(300, 300)];         //动画是添加到图层上的,动画结束后是否移除该动画 如果YES,fillMode属性基本没意义    basicAnimation.removedOnCompletion=NO;    //设置动画的状态    //kCAFillModeForwards:动画延迟结束开始执行动画时从fromValue到toValue最终停留在toValue    //kCAFillModeBackwards:动画在fromValue后开始延迟,延迟结束执行动画,从fromValue到toValue,最终到初始值状态    //kCAFillModeBoth:动画在fromValue后开始延迟,延迟结束执行动画,从fromValue到toValue,最终到toValue    //kCAFillModeRemoved:动画延迟结束开始执行动画时从fromValue到toValue最终停留在初始值状态    basicAnimation.fillMode=kCAFillModeRemoved;    //动画共有的一些属性    basicAnimation.duration=5.0;    // 延迟5秒执行    basicAnimation.beginTime=CACurrentMediaTime()+5;    //设置动画的代理     basicAnimation.delegate=self;    //在图层中增加动画    [self.btn.layer addAnimation:basicAnimation forKey:nil];       }//CAAnimation动画代理方法 这两个代理方法是在CAAnimation中的代理,所以其他的动画也可以使用- (void)animationDidStart:(CAAnimation *)anim{    NSLog(@"动画开始");}//CAAnimation动画代理方法结束动画- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{    NSLog(@"动画结束");    NSLog(@"%f",self.btn.frame.origin.x);} - (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];} @end

转载地址:http://cucgo.baihongyu.com/

你可能感兴趣的文章
spring security中当前用户信息
查看>>
[Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
查看>>
html-meta http-equiv设置网页指定时间跳转
查看>>
python 入门
查看>>
如何防止http请求数据被篡改
查看>>
MyEclipse 2013集成JRebel
查看>>
indexOf()
查看>>
go语言学习
查看>>
tidb 安装
查看>>
phpcms V9.6.0版本整合百度ueditor1.4.3.2,包括水图片上传水印
查看>>
Tiptop GP中Excel的控制方法
查看>>
JavaWeb分页技术总结
查看>>
基于unity框架构造IOC容器
查看>>
Windows更新导致的打印问题
查看>>
Chrome 控制台不完全指南
查看>>
Notification与多线程
查看>>
高可用、高扩展性、负载均衡
查看>>
VIM用法
查看>>
oscache.properties文件配置
查看>>
新建索引的一些原则
查看>>