设定动画CABasicAnimation的属性和说明

属性 说明 
duration 动画的时间
repeatCount 重复的次数。不停重复设置为 HUGE_VALF
repeatDuration 设置动画的时间。
beginTime 指定动画开始的时间。从开始延迟几秒的话,设置为【CACurrentMediaTime() + 秒数】 的方式
timingFunction 设置动画的速度变化
autoreverses 动画结束时是否执行逆动画
fromValue 所改变属性的起始值
toValue 所改变属性的结束时的值
byValue 所改变属性相同起始值的改变量

  //创建一个image view

  UIImageView *imageview=[[UIImageView alloc]init];

imageview.image=[UIImage imageNamed:@"logo.png"];

imageview.frame=CGRectMake(50, 50, imageview.image.size.width, imageview.image.size.height);

[self.view addSubview:imageview];

  //动画关键字属性设置说明  

说明 使用形式
transform.scale 比例转化 @(0.8)
transform.scale.x 宽的比例 @(0.8)
transform.scale.y 高的比例 @(0.8)
transform.rotation.x 围绕x轴旋转 @(M_PI)
transform.rotation.y 围绕y轴旋转 @(M_PI)
transform.rotation.z 围绕z轴旋转 @(M_PI)
cornerRadius 圆角的设置 @(50)
backgroundColor 背景颜色的变化 (id)[UIColor purpleColor].CGColor
bounds 大小,中心不变 [NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)];
position 位置(中心点的改变) [NSValue valueWithCGPoint:CGPointMake(300, 300)];
contents 内容,比如UIImageView的图片 imageAnima.toValue = (id)[UIImage imageNamed:@"to"].CGImage;
opacity 透明度 @(0.7)
contentsRect.size.width 横向拉伸缩放 @(0.4)最好是0~1之间的

  

  //1、移动

CABasicAnimation *moveAnimate=[CABasicAnimation animationWithKeyPath:@"position"];

//动画时长

moveAnimate.duration=2.0;

//动画重复次数

moveAnimate.repeatCount=HUGE_VALF;

//动画开始时间

moveAnimate.beginTime=CACurrentMediaTime()+2;

//是否自动执行逆动画

moveAnimate.autoreverses=YES;

//动画执行完后会回到初始状态,需要设置这两个属性

moveAnimate.removedOnCompletion=NO;

moveAnimate.fillMode=kCAFillModeForwards;

//设置动画初始位置

moveAnimate.fromValue=[NSValue valueWithCGPoint:imagetemp.layer.position];

//设置动画目的位置

moveAnimate.toValue=[NSValue valueWithCGPoint:CGPointMake(50, 50)];

//设置动画速率

moveAnimate.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

//添加动画

[imagetemp.layer addAnimation:moveAnimate forKey:@"move-layer"];

//2、缩放

CABasicAnimation *scaleAnimate=[CABasicAnimation animationWithKeyPath:@"transform.scale"];

//动画时长

scaleAnimate.duration=2.0;

//动画重复次数

scaleAnimate.repeatCount=HUGE_VALF;

//动画开始时间

scaleAnimate.beginTime=CACurrentMediaTime()+2;

//是否自动执行逆动画

scaleAnimate.autoreverses=YES;

//动画执行完后会回到初始状态,需要设置这两个属性

scaleAnimate.removedOnCompletion=NO;

scaleAnimate.fillMode=kCAFillModeForwards;

//设置动画初始位置

scaleAnimate.fromValue=[NSNumber numberWithFloat:1.0];

//设置动画目的位置

scaleAnimate.toValue=[NSNumber numberWithFloat:5.0];

//设置动画速率

scaleAnimate.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

//添加动画

[imagetemp.layer addAnimation:scaleAnimate forKey:@"scale-layer"];

//3、旋转

CABasicAnimation *rotateAnimate=[CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

//动画时长

rotateAnimate.duration=2.0;

//动画重复次数

rotateAnimate.repeatCount=HUGE_VALF;

//动画开始时间

rotateAnimate.beginTime=CACurrentMediaTime()+2;

//是否自动执行逆动画

rotateAnimate.autoreverses=YES;

//动画执行完后会回到初始状态,需要设置这两个属性

rotateAnimate.removedOnCompletion=NO;

rotateAnimate.fillMode=kCAFillModeForwards;

//设置动画初始位置

rotateAnimate.fromValue=[NSNumber numberWithFloat:0];

//设置动画目的位置

rotateAnimate.toValue=[NSNumber numberWithFloat:M_PI];

//设置动画速率

rotateAnimate.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

//添加动画

[imagetemp.layer addAnimation:rotateAnimate forKey:@"rotate-layer"];

//4、渐隐动画

CABasicAnimation *opacityAnimate=[CABasicAnimation animationWithKeyPath:@"opacity"];

//动画时长

opacityAnimate.duration=2.0;

//动画重复次数

opacityAnimate.repeatCount=HUGE_VALF;

//动画开始时间

opacityAnimate.beginTime=CACurrentMediaTime()+2;

//是否自动执行逆动画

opacityAnimate.autoreverses=YES;

//动画执行完后会回到初始状态,需要设置这两个属性

opacityAnimate.removedOnCompletion=NO;

opacityAnimate.fillMode=kCAFillModeForwards;

//设置动画初始位置

opacityAnimate.fromValue=[NSNumber numberWithFloat:0];

//设置动画目的位置

opacityAnimate.toValue=[NSNumber numberWithFloat:1];

//设置动画速率

opacityAnimate.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];

//添加动画

[imagetemp.layer addAnimation:opacityAnimate forKey:@"opacity-layer"];

//5、组合动画

CAAnimationGroup *group=[CAAnimationGroup animation];

//动画时长

group.duration=2.0;

//动画重复次数

group.repeatCount=HUGE_VALF;

group.animations=[NSArray arrayWithObjects:moveAnimate,scaleAnimate,rotateAnimate,opacityAnimate, nil];

//添加动画

[imagetemp.layer addAnimation:group forKey:@"group-layer"];

//6、设置委托,添加CAAnimationDelegate,监测开始和结束事件

group.delegate=self;

- (void)animationDidStart:(CAAnimation *)theAnimation {

  //动画开始了

}

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {

  //动画结束了

}

iOS动画之CABasicAnimation的使用方法(移动,旋转,缩放)的更多相关文章

  1. iOS开发之动画编程的几种方法

    iOS开发之动画编程的几种方法 IOS中的动画总结来说有五种:UIView<block>,CAAnimation<CABasicAnimation,CATransition,CAKe ...

  2. ios学习--详解IPhone动画效果类型及实现方法

    详解IPhone动画效果类型及实现方法是本文要介绍的内容,主要介绍了iphone中动画的实现方法,不多说,我们一起来看内容. 实现iphone漂亮的动画效果主要有两种方法,一种是UIView层面的,一 ...

  3. 解析 iOS 动画原理与实现

    这篇文章不会教大家如何实现一个具体的动画效果,我会从动画的本质出发,来说说 iOS 动画的原理与实现方式. 什么是动画 动画,顾名思义,就是能“动”的画.人的眼睛对图像有短暂的记忆效应,所以当眼睛看到 ...

  4. IOS动画隐式,显式,翻页

    //  ViewController.m //  IOS动画0817 // //  Created by 张艳锋 on 15/8/17. //  Copyright (c) 2015年 张艳锋. Al ...

  5. iOS动画原理

    1. iOS动画原理 本质:动画对象(这里是UIView)的状态,基于时间变化的反应 分类:可以分为显式动画(关键帧动画和逐帧动画)和隐式动画 关键帧和逐帧总结:关键帧动画的实现方式,只需要修改某个属 ...

  6. iOS 动画基础

    原文:http://www.cnblogs.com/lujianwenance/p/5733846.html   今天说一下有关动画的基础,希望能帮助到一些刚接触iOS动画或者刚开始学习iOS的同学, ...

  7. IOS动画总结

    IOS动画总结   一.基本方式:使用UIView类的UIViewAnimation扩展 + (void)beginAnimations:(NSString *)animationID context ...

  8. IOS 动画专题 --iOS核心动画

    iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...

  9. iOS动画编程

    IOS中的动画总结来说有五种:UIView<block>,CAAnimation<CABasicAnimation,CATransition,CAKeyframeAnimation& ...

  10. iOS 动画篇 之 Core Animation (一)

    iOS中实现动画有两种方式,一种是自己不断的通过drawRect:方法来绘制,另外一种就是使用核心动画(Core Animation). 导语: 核心动画提供高帧速率和流畅的动画,而不会增加CPU的负 ...

随机推荐

  1. 【Vue】Re14 Router 第一部分(入门案例)

    一.箭头函数(Lambda匿名函数) <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  2. 国产操作系统 “银河麒麟操作系统V10” 试用失败历程

    面对外国的科技封锁,具有自主产权的国产软件已经变得迫在眉睫了,几天前在新闻上看到国产的操作"银河麒麟操作系统V10"已经发布,于是抱着尝鲜的心态想着去试着用用.虽然都是基于linu ...

  3. pycuda学习过程中的一些发现,cuda函数的初始化要在cuda内存空间初始化之后,否则会报错

    参考: https://www.cnblogs.com/devilmaycry812839668/p/15348610.html 最近在看WarpDrive的代码,其中cuda上运行的代码是使用pyc ...

  4. 关于python的GIL的解除——PEP 703 – Making the Global Interpreter Lock Optional in CPython

    PEP地址: https://peps.python.org/pep-0703/ PEP 703 – Making the Global Interpreter Lock Optional in CP ...

  5. 低端hdmi视频采集卡的替代方案——向日葵远控

    前一阵看直播推货入手了一款hdmi视频采集卡,如下: ======================================================= 使用这个视频采集卡发现两个问题: ...

  6. 9组-Beta冲刺-总结

    一.基本情况 组长博客链接:9组-Beta冲刺-总结 现场答辩总结:本次答辩,我们演示了我们到Beta冲刺周结束时的成果展示,离目标还有一些距离,不过本次答辩完成了任务,总体来说还不错,希望下次最终答 ...

  7. WIN32下的模拟时钟

    #include <Windows.h> #include <math.h> #include <tchar.h> #include "resource. ...

  8. 全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列

    全网最适合入门的面向对象编程教程:38 Python 常用复合数据类型-使用列表实现堆栈.队列和双端队列 摘要: 在 Python 中,列表(list)是一种非常灵活的数据结构,可以用来实现堆栈(st ...

  9. APT 使用

    使用 Ubuntu 包搜索器 apt 命令 功能 apt install 安装软件包 apt remove 移除软件包 apt purge 移除软件包及配置文件 apt update 刷新存储库索引 ...

  10. LaTeX 常见希腊字母

    字母名称 大写 命令 小写 命令 alpha A A α \alpha beta B B β \beta gamma Γ \Gamma γ \gamma delta Δ \Delta δ \delta ...