设定动画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. Jmeter函数助手32-UUID

    UUID函数用于返回一个伪随机类型4通用唯一标识符(UUID).该函数没有参数,直接引用即可

  2. 从C++看C#托管内存与非托管内存

    进程的内存 一个exe文件,在没有运行时,其磁盘存储空间格式为函数代码段+全局变量段.加载为内存后,其进程内存模式增加为函数代码段+全局变量段+函数调用栈+堆区.我们重点讨论堆区. 进程内存 函数代码 ...

  3. python性能分析器:cProfile

    代码: (1) import cProfile import re cProfile.run('re.compile("foo|bar")') 运行结果: (2) import c ...

  4. (续) gym atari游戏的环境设置问题:Breakout-v0, Breakout-v4, BreakoutNoFrameskip-v4和BreakoutDeterministic-v4的区别

    根据前文(https://www.cnblogs.com/devilmaycry812839668/p/14665072.html)我们知道: 首先是v0和v4的区别:带有v0的env表示会有25%的 ...

  5. 如何关闭NVIDIA显卡的CUDA运算功能

    基本很少有人会想到要关闭NVIDIA显卡的CUDA计算功能,这东西不想用就不跑cuda代码不就可以了吗,但是作为一个深度学习服务器集群的管理者来说,这个功能还是有用处的.前一阵使用实验室的一台服务器的 ...

  6. 9组-Beta冲刺-2/5

    一.基本情况(15分) 队名:不行就摆了吧 组长博客:9组-Beta冲刺-2/5 GitHub链接:https://github.com/miaohengming/studynote/tree/mai ...

  7. ChatGLM

    ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools(2024.7.16) Code:https:// ...

  8. 推荐一个优秀的 .NET MAUI 组件库

    前言 .NET MAUI 的发布,项目中可以使用这个新的跨平台 UI 框架来轻松搭建的移动和桌面应用. 为了帮助大家更快地构建美观且功能丰富的应用,本文将推荐一款优秀的 .NET MAUI 组件库MD ...

  9. CH03_运算符

    CH03_运算符 算术运算符 作用:用于处理四则运算 示例: #include <iostream> using namespace std; int main() { int a = 1 ...

  10. mysql读写分离之springboot集成

    springboot.mysql实现读写分离 1.首先在springcloud config中配置读写数据库 mysql: datasource: readSize: 1 #读库个数 type: co ...