iOS中的CABasicAnimation的相关学习示例

CABasicAnimation 只有三个常用到的属性:fromValue  toValue  ByValue;

下面是他的一些参数说明:

(1).Autoreverses

当你设定这个属性为 YES 时,在它到达目的地之后,动画的返回到开始的值,代替了直接跳转到 开始的值。

(1).Duration
Duration 这个参数你已经相当熟悉了。它设定开始值到结束值花费的时间。期间会被速度的属性所影响。 RemovedOnCompletion
这个属性默认为 YES,那意味着,在指定的时间段完成后,动画就自动的从层上移除了。这个一般不用。

假如你想要再次用这个动画时,你需要设定这个属性为 NO。这样的话,下次你在通过-set 方法设定动画的属 性时,它将再次使用你的动画,而非默认的动画。

(2).Speed

默认的值为 1.0.这意味着动画播放按照默认的速度。如果你改变这个值为 2.0,动画会用 2 倍的速度播放。 这样的影响就是使持续时间减半。如果你指定的持续时间为 6 秒,速度为 2.0,动画就会播放 3 秒钟---一半的 持续时间。

(3).BeginTime

这个属性在组动画中很有用。它根据父动画组的持续时间,指定了开始播放动画的时间。默认的是 0.0.组 动画在下个段落中讨论“Animation Grouping”。

(4).TimeOffset

如果一个时间偏移量是被设定,动画不会真正的可见,直到根据父动画组中的执行时间得到的时间都流逝 了。

(5).RepeatCount

默认的是 0,意味着动画只会播放一次。如果指定一个无限大的重复次数,使用 1e100f。这个不应该和 repeatDration 属性一块使用。

(6).RepeatDuration

这个属性指定了动画应该被重复多久。动画会一直重复,直到设定的时间流逝完。它不应该和 repeatCount 一起使用。

我们可以通过animationWithKeyPath键值对的方式来改变动画,具体参数如下:

  transform.scale = 比例轉換

transform.scale.x = 闊的比例轉換

transform.scale.y = 高的比例轉換

transform.rotation.z = 平面圖的旋轉

opacity = 透明度

margin

zPosition

backgroundColor    背景颜色

cornerRadius    圆角

borderWidth

bounds

contents

contentsRect

cornerRadius

frame

hidden

mask

masksToBounds

opacity

position

shadowColor

shadowOffset

shadowOpacity

shadowRadius

下面是一些app中常用到的动画效果,用以记录方便以后使用

//永久闪烁的动画

 1 +(CABasicAnimation *)opacityForever_Animation:(float)time //永久闪烁的动画
 2  
 3 {
 4  
 5     CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"opacity"];
 6  
 7     animation.fromValue=[NSNumber numberWithFloat:1.0];
 8  
 9     animation.toValue=[NSNumber numberWithFloat:0.0];
10  
11     animation.autoreverses=YES;
12  
13     animation.duration=time;
14  
15     animation.repeatCount=FLT_MAX;
16  
17     animation.removedOnCompletion=NO;
18  
19     animation.fillMode=kCAFillModeForwards;
20  
21     return animation;
22  
23 }

//有闪烁次数的动画

 1 +(CABasicAnimation *)opacityTimes_Animation:(float)repeatTimes durTimes:(float)time;
 2
 3 {
 4
 5     CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"opacity"];
 6
 7     animation.fromValue=[NSNumber numberWithFloat:1.0];
 8
 9     animation.toValue=[NSNumber numberWithFloat:0.4];
10
11     animation.repeatCount=repeatTimes;
12
13     animation.duration=time;
14
15     animation.removedOnCompletion=NO;
16
17     animation.fillMode=kCAFillModeForwards;
18
19     animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
20
21     animation.autoreverses=YES;
22
23     return  animation;
24
25 }

//横向移动

 1 +(CABasicAnimation *)moveX:(float)time X:(NSNumber *)x
 2
 3 {
 4
 5     CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
 6
 7     animation.toValue=x;
 8
 9     animation.duration=time;
10
11     animation.removedOnCompletion=NO;
12
13     animation.fillMode=kCAFillModeForwards;
14
15     return animation;
16
17 }

//纵向移动

 1 +(CABasicAnimation *)moveY:(float)time Y:(NSNumber *)y
 2
 3 {
 4
 5     CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
 6
 7     animation.toValue=y;
 8
 9     animation.duration=time;
10
11     animation.removedOnCompletion=NO;
12
13     animation.fillMode=kCAFillModeForwards;
14
15     return animation;
16
17 }

//缩放

 1 +(CABasicAnimation *)scale:(NSNumber *)Multiple orgin:(NSNumber *)orginMultiple durTimes:(float)time Rep:(float)repeatTimes
 2 {
 3
 4     CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.scale"];
 5
 6     animation.fromValue=orginMultiple;
 7
 8     animation.toValue=Multiple;
 9
10     animation.duration=time;
11
12     animation.autoreverses=YES;
13
14     animation.repeatCount=repeatTimes;
15
16     animation.removedOnCompletion=NO;
17
18     animation.fillMode=kCAFillModeForwards;
19
20     return animation;
21
22 }

//组合动画

 1 +(CAAnimationGroup *)groupAnimation:(NSArray *)animationAry durTimes:(float)time Rep:(float)repeatTimes
 2
 3 {
 4
 5     CAAnimationGroup *animation=[CAAnimationGroup animation];
 6
 7     animation.animations=animationAry;
 8
 9     animation.duration=time;
10
11     animation.repeatCount=repeatTimes;
12
13     animation.removedOnCompletion=NO;
14
15     animation.fillMode=kCAFillModeForwards;
16
17     return animation;
18
19 }

//路径动画

 1 +(CAKeyframeAnimation *)keyframeAniamtion:(CGMutablePathRef)path durTimes:(float)time Rep:(float)repeatTimes
 2
 3 {
 4
 5     CAKeyframeAnimation *animation=[CAKeyframeAnimation animationWithKeyPath:@"position"];
 6
 7     animation.path=path;
 8
 9     animation.removedOnCompletion=NO;
10
11     animation.fillMode=kCAFillModeForwards;
12
13     animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
14
15     animation.autoreverses=NO;
16
17     animation.duration=time;
18
19     animation.repeatCount=repeatTimes;
20
21     return animation;
22
23 }

//点移动

 1 +(CABasicAnimation *)movepoint:(CGPoint )point
 2 {
 3
 4     CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation"];
 5
 6     animation.toValue=[NSValue valueWithCGPoint:point];
 7
 8     animation.removedOnCompletion=NO;
 9
10     animation.fillMode=kCAFillModeForwards;
11
12     return animation;
13
14 }

//旋转

 1 +(CABasicAnimation *)rotation:(float)dur degree:(float)degree direction:(int)direction repeatCount:(int)repeatCount
 2
 3 {
 4
 5     CATransform3D rotationTransform  = CATransform3DMakeRotation(degree, 0, 0,direction);
 6
 7     CABasicAnimation* animation;
 8
 9     animation = [CABasicAnimation animationWithKeyPath:@"transform"];
10
11
12
13 animation.toValue= [NSValue valueWithCATransform3D:rotationTransform];
14
15     animation.duration= dur;
16
17 animation.autoreverses= NO;
18
19     animation.cumulative= YES;
20
21     animation.removedOnCompletion=NO;
22
23     animation.fillMode=kCAFillModeForwards;
24
25     animation.repeatCount= repeatCount;
26
27 animation.delegate= self;
28
29
30
31 return animation;
32
33 }

时间: 2024-10-14 09:00:07

iOS中的CABasicAnimation的相关学习示例的相关文章

iOS 开发常用框架以及相关学习资料集合--不断更新

整理了一些开发时常用的一些框架的缩写,方便学习与记忆 有些资料可能时间比较久远了,我尽量挑选的都是最近两年的,里面有的是OC的,有Swift的,都是文章,语言的影响不大. 感谢以下各位博主的分享,如果有侵权的地方可以私信我删除,这是我的微博 http://weibo.com/lfbWb 不定时更新中 前缀 全称 对应库 简单解释 学习资料的链接 NS NextStep or NeXTSTEP Foundation.framework UI User Interface UIKit.framewo

iOS中UIImageView帧动画相关属性和方法

@property(nonatomic,copy)NSArray *animationImages; 需要播放的序列图片数组(里面都是UIImage对象,会按顺序显示里面的图片) @property(nonatomic)NSTimeInterval animationDuration; 帧动画的持续时间 @property(nonatomic)NSInteger animationRepeatCount; 帧动画的执行次数(默认是无限循环) - (void)startAnimating; 开始执

IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSXMLJSONSQLiteCoreData 一.文件操作 1.因为应用是在沙盒(Sandbox)中的,在文件读写权限上受到限制,只能在几个目录下读写文件: * Documents:应用中用户数据可以放在这里,iTunes备份和恢复的时候会包括此目录 * tmp:存放临时文件,iTunes不会备份和恢复

在iOS中获取UIView的所有层级结构 相关

在iOS中获取UIView的所有层级结构 应用场景 在实际 iOS 开发中,很多时候都需要知道某个 UI 控件中包含哪些子控件,并且分清楚它们的层级结构和自个的 frame 以及 bounds ,以便我们完成复杂的 UI 布局,下面的代码就能很方便的获取某个 UI 控件的所有的层级结构,我们可以用它计算,然后把结果写入到本地磁盘,导出成XML文件,这样我们就可以很直观的看出它内部的细节. /** * 返回传入veiw的所有层级结构 * * @param view 需要获取层级结构的view *

iOS中的转场研究(转)

http://mikixiyou.iteye.com/blog/1745995 http://www.cocoachina.com/ios/20141113/10212.html 在iOS开发中,segue用来实现storyboard中源视图控制器和目标视图控制器连接,当segue被触发时,系统将完成下列操作: 1.实例化目标视图控制器2.实例化一个新segue对象,该对象持有所有的信息3.调用源视图控制器的prepareForSegue:sender:方法,4.调用segue的 perform

iOS及Mac开源项目和学习资料【超级全面】

UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明.具体使用看“使用方法”. (国人写) XHRefreshControl – XHRefreshControl 是一款高扩展性.低耦合度的下拉刷新.上提加载更多的组件.(国人写) CBStoreHou

IOS中调用系统的电话、短信、邮件、浏览功能

iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评论, 收藏, 编辑 --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: 调用系统应用 使用系统服务目 录 短信与邮件 通讯录

iOS开发--iOS及Mac开源项目和学习资料

文/零距离仰望星空(简书作者)原文链接:http://www.jianshu.com/p/f6cdbc8192ba著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 原文出处:codecloud UI下拉刷新EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字

iOS 中 UIView 和 CALayer 的关系

UIView 有一个名叫 layer ,类型为 CALayer 的对象属性,它们的行为很相似,主要区别在于:CALayer 继承自 NSObject ,不能够响应事件. 这是因为 UIView 除了负责响应事件 ( 继承自 UIReponder ) 外,它还是一个对 CALayer 的底层封装.可以说,它们的相似行为都依赖于 CALayer 的实现,UIView 只不过是封装了它的高级接口而已. 那 CALayer 是什么呢? CALayer(图层) 文档对它定义是:管理基于图像内容的对象,允许