热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CoreAnimation应用和使用方法

2019独角兽企业重金招聘Python工程师标准iPhone应用程序之CoreAnimation应用和使用方法是本文要介绍的内容,CoreAnimation是苹

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

iPhone应用程序之CoreAnimation应用和使用方法是本文要介绍的内容,CoreAnimation是苹果对用户界面动画的封装,它的framework是QuartzCore.framework。使用时需要将这个库添加的工程,我们一起来看内容详解。

1、CALayerCALayer的绝大多数的属性都支持动画,对这些值直接进行设置会隐式的调用动画效果,只不过动画的持续时间(duration)较 短,几乎看不出效果。如果要达到明显的动画效果,就需要显式的调用动画。

常用的属性:

@property CGRect bounds;    @property CGPoint position;    @property CATransform3D transform; 

如何调动画?

- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key 

其中anim是自己创建的动画对象,继承于CAAnimation。key是动画的键,一般是nil,或自己设定的值,意义不大。

2、CAAnimationCAAnimation是所有动画类的基类,一般不会直接使用。它提供给所有子类的一个很有用的属性是

@property(retain) CAMediaTimingFunction *timingFunction; timingFunction 

是一个CAMediaTimingFunction对象,一般这样创建:

[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];    kCAMediaTimingFunctionEaseIn 

可以替换为一下值

:NSString * const kCAMediaTimingFunctionLinear;    NSString * const kCAMediaTimingFunctionEaseIn;    NSString * const kCAMediaTimingFunctionEaseOut;    NSString * const kCAMediaTimingFunctionEaseInEaseOut; 

3、CABaseAnimation基本的动画,直接作用于CALayer的对象的各种属性。 下面是让一个layer由蓝色渐渐变为透明的效果动画

CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];    ani.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];    ani.fromValue = [UIColor blueColor].CGColor;    ani.toValue = [UIColor clearColor].CGColor;   ani.duration = 3;    [view1.layer addAnimation:ani forKey:@"ani1"]; 

指定要进行动画的属性,比如上例中要对layer的backgroundColor属性进行变化。

+ (id)animationWithKeyPath:(NSString *)path;  

path指定要变化的属性路径,比如@“bounds”,@“bounds.size.width”等。

这三个属性只需要提供1个或2个就可以了

:@property(retain) id fromValue, toValue, byValue; 

具体的作用是: 如果有fromValue和toValue,那么动画就是由fromValue变化到toValue。

如果有fromValue和byValue,那么动画就是由fromValue变化到fromValue+byValue。

如果只有toValue,那么动画就是由当前的值变化到toValue。 如果只有byValue,那么动画就是由当前的值变化到当前值+byValue。

你可以这么想像:当CALayer对象中添加了一个动画后,系统会开启一个定时器,不断刷新layer的属性的值,其值由fromValue和toValue根据一定的插值算法来计算出来的。 只是想像,layer的属性在动画过程中并没有改变,这些显示效果都是由GPU完成的,不会改变layer的属性值,如果必要你必须自 己设定layer的属性。

4、CAKeyframeAnimation关键帧动画 有时你或许需要一个非固定方向的动画,比如让一个layer先向右移动100个像素,然后在向下移动100个像素。这时就可以用关键 帧动画。

CAKeyframeAnimation *ani = [CAKeyframeAnimation animationWithKeyPath:@"position"];    ani.values = [NSArray arrayWithObjects:   NSValue valueWithCGPoint:CGPointMake(100,200)],    [NSValue valueWithCGPoint:CGPointMake(200,200)],    [NSValue valueWithCGPoint:CGPointMake(200,300)], nil];   ani.duration = 3; [view1.layer addAnimation:ani forKey:@"ani2"]; 

6、UIView的动画支持UIView可以直接支持view的动画,可以影响多个View。

动画是线性变化的,默认 动画开始变化慢,越来越快 动画开始变化快,越来越慢 慢入慢出,先慢再快,最后又慢,比较常用

[UIView beginAnimations:nil context:nil];    [UIView setAnimationDuration:0.3];    //一些view的操作   view.frame = xxx; [UIView commitAnimations]; 

小结:iPhone应用程序之CoreAnimation应用和使用方法的内容介绍完了,希望本文对你有所帮助!


转:https://my.oschina.net/makeffort/blog/90075



推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
author-avatar
嘻嘻2502891803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有