首页
学习
活动
专区
工具
TVP
发布

iOS动画-CALayer隐式动画原理与特性

所谓隐式动画,其实是指我们可以在不设定任何动画类型的情况下,仅仅改变CALayer的一个可做动画的属性,就能实现动画效果。...测试隐式动画事务.gif 可以看到,CALayer颜色的渐变动画已经变为了3秒,而旋转动画由于是默认事务变化,仍然以0.25秒快速执行。...2.图层行为 我们上述的实验对象是一个独立图层,如果直接对UIView或者CALayer关联的图层layer改变动画属性,这样是没有隐式动画效果的,这说明虽然Core Animation对所有的CALayer...为了更好的理解中一点,我们需要知道隐式动画是如何实现的: 我们把改变属性时CALayer自动执行的动画称作行为,当CALayer的属性被修改时,它会调用-actionForKey:方法传递属性名称,我们可以找到这个方法的具体说明如下...:要么返回空(这种情况不会有动画发生),要么返回遵循CAAction协议的对象(CALayer拿这个结果去对先前和当前的值做动画)。

4.3K51
您找到你想要的搜索结果了吗?
是的
没有找到

iOS-核心动画详解之CALayer

CALayer简介: CALayer我们又称为层,在每个UIView内部都有一个layer的属性,UIView之所以能够显示,就是因为它里面有layer层,才具有显示的功能,我们通过操作CALayer...隐式动画. #### 4.1 什么是隐式动画? >**了解什么是隐式动画前,要先了解什么是根层和非根层.** 根层:UIView内部自动关联着的那个layer我们称它是根层....>隐式动画就是当对非根层的部分属性进行修改时, 它会自动的产生一些动画的效果.我们称这个默认产生的动画为隐式动画.这些属性称为Animatable Properties(可动画属性)。...也就是 **手动创建的CALayer对象,都存在着隐式动画** >列举常见的Animatable Properties: 1. bounds:CALayer的宽度和高度,修改时产生缩放动画。...2. backgroundColor:背景颜色,修改时产生背景颜色渐变动画效果。 3. position:CALayer的位置,修改时产生平移动画 例: >**如何取消隐式动画?

1.9K60

iOS动画-CALayer布局属性详解

,可能会需要设置此属性来决定图层是围绕哪一个点旋转的;但这时候我们又不得不考虑一个问题:修改锚点可以让我们的动画围绕非中心点旋转,但是这也改变了原有视图的位置frame,这是我们不想要的结果,该如何解决呢...make.width.height.mas_equalTo(100); }]; [self.view layoutIfNeeded]; //orangeView的旋转动画...锚点动画.gif 三、视图与图层的坐标系 CALayer给不同坐标系之间的图层转换提供了一些工具类方法: - (CGPoint)convertPoint:(CGPoint)p fromLayer:(nullable...CALayer *)l; - (CGPoint)convertPoint:(CGPoint)p toLayer:(nullable CALayer *)l; - (CGRect)convertRect...:(CGRect)r fromLayer:(nullable CALayer *)l; - (CGRect)convertRect:(CGRect)r toLayer:(nullable CALayer

2.1K20

Quartz2D复习(四) --- 图层CALayer动画CAAnimation

,还可以给图层添加动画,来实现一些比较炫酷的效果 6)、CALayer属性:   @property CGRect bounds;     //宽度和高度   @property CGPoint position...的比较   通过CALayer,可以做出跟UIView一样的界面效果;但是UIView多了一个事件处理的功能,CALayer不能处理用户的触摸事件;   不过CALayer的性能会高一些,因为它少了事件处理的功能...,更加轻量级 9)、每个UIView内部都默认关联着一个CALayer, 我们可以称这个CALayer为RootLayer(跟层);   所有的非RootLayer, 也就是手动创建的CALayer对象...NSString类型),并且对CALayer的这个属性的值进行修改,达到相应的动画效果。   ...比如指定@"position"为keyPath, 就修改CALayer的position属性的值,已达到平移的动画效果 10)、CABasicAnimation -- 基本动画   属性说明:   fromValue

1.4K30

Core Animation总结

下图描述了CoreAnimation与UIKit框架的关系 [1240] Core Animation开发动画的本质就是将CALayer中的内容转化为位图从而供硬件操作,所以想熟练掌握动画操作必须了解CALayer...CALayer CALayer跟UIView概念上很相似,同样都是被层级管理树管理的一些矩形块,同样可以包含内容,管理子图层,可以做动画和变换。...CAPropertyAnimation属性 说明 keyPath 通过指定CALayer的一个属性名称为keyPath(NSString类型),并且对CALayer的这个属性的值进行修改,达到相应的动画效果...翻转,沿着X轴) M_PI*n transform.rotation.Y 旋转动画(翻转,沿着Y轴) M_PI*n transform.rotation.Z 旋转动画(翻转,沿着Z轴) M_PI*n transform.translation.x...旋转动画(翻转,沿着X轴) 任意数值 transform.translation.y 旋转动画(翻转,沿着Y轴) 任意数值 CAKeyframeAnimation CABasicAnimation是将属性从起始值更改为结束值

1.2K10

Android实现3D翻转动画效果

Android中并没有提供直接做3D翻转动画,所以关于3D翻转动画效果需要我们自己实现,那么我们首先来分析一下Animation 和 Transformation。...Animation动画的主要接口,其中主要定义了动画的一些属性比如开始时间,持续时间,是否重复播放等等。...而Transformation中则包含一个矩阵和alpha值,矩阵是用来做平移,旋转和缩放动画的,而alpha值是用来做alpha动画的,要实现3D旋转动画我们需要继承自Animation类来实现,我们需要重载...getTransformation和applyTransformation,在getTransformation中Animation会根据动画的属性来产生一系列的差值点,然后将这些差值点传给applyTransformation...rotation.setFillAfter(true); rotation.setInterpolator(new DecelerateInterpolator()); // 开始动画

2K10

CALayer的寄宿图

在iOS当中,所有的视图都是从一个叫做UIView的基类派生而来,UIView可以处理触摸事件,支持基于CoreGraphics的绘图,可以做仿射变换(例如旋转或缩放),或者简单的滑动以及渐变动画。...和UIView最大的不同是,CALayer不处理用户的交互。...实际上,CALayer才是真正用来在屏幕上显示和做动画的,UIView仅仅是对它的一个封装,提供了处理触摸事件的功能,以及CoreAnimation底层方法的高级接口。...某种意义上说的确是这样,对于一些简单的需求而言,我们确实没必要处理CALayer,因为苹果已经通过UIView的高级API间接地使得动画变得很简单。...寄宿图 事实上,CALayer类能够包含一张你喜欢的图片,layer中所包含的这张图片称为CALayer的寄宿图。

98320

CALayer 图层概念二、CALayer属性二、方法

概念 CA -> Core Animation (核心动画) 相对更底层. CALayer负责视图中显示内容和动画.所有动画都是作用在CALayer上的....如 : bounds : 用于设置CALayer的宽度和高度,修改这个属性会产生缩放动画. background : 用户设置CALayer的背景色, 修改这个属性会产生背景色的渐变动画. position...: 用于设置CALayer的位置,修改这个属性会产生平移动画....动画,但是在 animation block 中又重新启用了它们 (1)bounds : 用于设置CALayer的宽度和高度,修改这个属性会产生缩放动画...(2)backgroundColor: 用户设置CALayer的背景色, 修改这个属性会产生背景色的渐变动画 (3)position : 用于设置CALayer的位置,修改这个属性会产生平移动画

1.4K70

iOS开发CoreAnimation解读之二——对CALayer的分析

BOOL hidden; //每个layer层有两面,这个属性确定是否两面都显示 @property(getter=isDoubleSided) BOOL doubleSided; //是否进行y轴的方向翻转...@property(getter=isGeometryFlipped) BOOL geometryFlipped; //获取当前layer内容y轴方向是否被翻转了 - (BOOL)contentsAreFlipped... key值起到id的作用,通过key值,可以取到这个动画对象 - (void)addAnimation:(CAAnimation *)anim forKey:(nullable NSString *)key...; //移除所有动画对象 - (void)removeAllAnimations; //移除某个动画对象 - (void)removeAnimationForKey:(NSString *)key; /.../获取所有动画对象的key值 - (nullable NSArray *)animationKeys; //通过key值获取动画对象 - (nullable CAAnimation

95820

前端|3D立体视频翻转动画

基本介绍 HTML5 3D立方体翻转动画特效是一款基于TweenMax制作多张图片拼接的3D立方体正方形旋转动画特效。 ?...图1.1 效果图 思路分析 制作3D立体视频翻转动画网页时,主要用到以下方法: 1、使用animation: rotate linear ns infinite属性来设置动画播放样式:动画对象,播放速度...transform:rotateX() rotateY() rotateZ()让我们能够对元素进行翻转; ransform: scaleX()通过设置X轴的值来定义缩放转换。...:动画名 执行一次时间 执行方式 使动画永远的执行下去*/ } (3)修饰小方块的六个面和它的视频大小位置。...,设置动画旋转效果(@keyframe效果:实现动画效果;使用方法:@keyframe 后+动画名{from:初始状态;to:末状态})。

66220
领券