#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

Core Animation之CABasicAnimation(基础动画)的更多相关文章

  1. Core Animation中的基础动画

    基础动画 在开发过程中很多情况下通过基础动画就可以满足开发需求,前面例子中使用的UIView代码块进行图像放大缩小的演示动画也是基础动画(在iOS7 中UIView也对关键帧动画进行了封装),只是UI ...

  2. Core Animation之CABasicAnimation

    在iOS中,图形可分为以下几个层次: 越上层,封装程度越高,动画实现越简洁越简单,但是自由度越低:反之亦然.本文着重介绍Core Animation层的基本动画实现方案. 在iOS中,展示动画可以类比 ...

  3. 使用Core Animation对象来实现动画

    转载保留原文地址:http://blog.csdn.net/kqjob/article/details/10417461,转载的 在iOS中如果使用普通的动画则可以使用UIKit提供的动画方式来实现, ...

  4. iOS Core Animation学习总结(3)--动画的基本类型

    一. CABasicAnimation (基础动画) 移位: CABasicAnimation *animation = [CABasicAnimation animation]; //keyPath ...

  5. Core Animation中的组动画

    实际开发中一个物体的运动往往是复合运动,单一属性的运动情况比较少,但恰恰属性动画每次进行动画设置时一次只能设置一个属性进行动画控制(不管是 基础动画还是关键帧动画都是如此),这样一来要做一个复合运动的 ...

  6. core Animation之CAKeyframeAnimation(关键帧动画)

    CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSA ...

  7. 在ios中运用core animation暂停和继续动画

    本文转载至 http://blog.csdn.net/wildfireli/article/details/23191861 暂停和继续动画的核心代码如下: <pre name="co ...

  8. Core Animation中的关键帧动画

    键帧动画就是在动画控制过程中开发者指定主要的动画状态,至于各个状态间动画如何进行则由系统自动运算补充(每两个关键帧之间系统形成的动画称为“补间动画”),这种动画的好处就是开发者不用逐个控制每个动画帧, ...

  9. Core Animation一些Demo总结 (动态切换图片、大转盘、图片折叠、进度条等动画效果)

    前一篇总结了Core Animation的一些基础知识,这一篇主要是Core Animation 的一些应用,涉及到CAShapeLayer.CAReplicatorLayer等图层的知识. 先看效果 ...

随机推荐

  1. AngularJS 路由 resolve属性

    当路由切换的时候,被路由的页面中的元素(标签)就会立马显示出来,同时,数据会被准备好并呈现出来.但是注意,数据和元素并不是同步的,在没有任何设置的情况下,AngularJS默认先呈现出元素,而后再呈现 ...

  2. Windows 7/Vista下安装Oracle Developer Suit遇到的几个问题

    http://blog.csdn.net/pan_tian/article/details/8016318 Oracle Developer Suite (ODS) 10g是在Windows 7/Vi ...

  3. zabbix_server 报警

    ---恢复内容开始--- 记一个zabbix报警. zabbxi版本   zabbix_server监控报警 zabbix busy unreachable poller processes  mor ...

  4. WPF 打印界面(控件)到A4纸

    这次遇到一个需求,就是将整个界面打印在A4纸上. 需求清楚后,Bing一下关于打印,就找到一个类PrintDialog ,其中两个方法可能会用到: 特别是public void PrintVisual ...

  5. Asp.Net MVC记住用户登录信息 下次登录无需输入密码

    有的时候做网站,就需要记住用户登录信息,下次再登录网站时,不用重复输入用户名和密码,原理是浏览器的cookie把状态给记住了! 那么具体是怎么实现的呢?下面博主将一部分代码贴出来,想要完整版的Demo ...

  6. powerviot open error in sharepoint 2013

    Testing Service c2WTS +- Service c2WTS found +- Service c2WTS is running +- Path of service: C:\Prog ...

  7. MVVM双向绑定实现之Object.defineProperty

    随着web应用的发展,直接操作dom的应用已渐行渐远,取而代之的是时下越来越流行的MVVM框架,dom操作几乎绝迹,这里面自然是框架底层封装的结果.MVVM框架的双向数据绑定使开发效率大大提高:然后在 ...

  8. Spring Cloud断路器Hystrix

    在微服务架构中,存在着那么多的服务单元,若一个单元出现故障,就会因依赖关系形成故障蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构就更加的不稳定.为了解决这样的问题,因此产生了断路器模式. 什么是 ...

  9. JS常用工具函数(持续记录)

    1.设置获取cookie //方式1 //设置cookie function SetCookie(name, value)//两个参数,一个是cookie的名字,一个是值 { var Days = 3 ...

  10. POJ 2538

    #include<string> //#include #include<stdio.h> #include<iostream> using namespace s ...