首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当[layer removeAllAnimations]调用时,如何让动画视图保持在当前位置

[layer removeAllAnimations]调用时,如果您希望动画视图保持在当前位置,可以使用以下方法:

  1. 在调用[layer removeAllAnimations]之前,记录动画视图的当前位置。
  2. 在调用[layer removeAllAnimations]之后,将动画视图的位置重置为记录的当前位置。

以下是一个简单的示例代码:

代码语言:objective-c
复制
// 记录当前位置
CGPoint currentPosition = animationView.layer.position;

// 移除所有动画
[animationView.layer removeAllAnimations];

// 将位置重置为当前位置
animationView.layer.position = currentPosition;

这样,即使您移除了所有动画,动画视图仍然会保持在当前位置。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一个循环动画引起的内存泄露问题总结

1 秒后将 view 显示出来,并回到原来位置,重复执行上面步骤 下面将逐步分析问题并提供相应的解决方案,以及如何从根源上解决这个问题。...";    [self.baseAniMoveView.layer removeAllAnimations];    self.baseAniMoveView.hidden = NO;    ...后来发现,问题是出在动画完成的回里,里面是判断 flag 为 YES 时才会跑进去执行 performSelector 方法,而为 NO 时就不会有问题。...   [self.baseAniMoveView.layer addAnimation:group forKey:kKeyAnimationKey]; } 其中难点在于如何控制 平移动画 完成后,将...在这里提到了进入后台及电池相关的,所以才推测是为了省电,不然在用户不可见的界面,还一直进行 layer 的刷新来做动画,是会对电池造成一点点损耗的,动画一多就更明显了。

2.4K20

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

当你设置了Layer的内容后,例如设置了一张图片,内容的尺寸不一定会刚好和layer的尺寸合适,我们可以对其位置的调整,使其达到我们想要的效果,contentsGravity属性决定了内容对齐与填充方式...,这个属性不一定总会返回一个实体对象,只有当进行动画或者其他渲染的操作时,这个属性会返回一个在当前屏幕上的layer,不且每一次执行,这个对象都会不同,它是原layer的一个副本presentationLayer...对于modelLayer,它会返回当前的存储信息的Layer,也是当前layer对象,始终唯一。...尺寸 @property CGRect bounds; //设置layer位置 @property CGPoint position; //设置其在父layer中的层次,默认为0,这个值越大,层次越靠上...; //移除所有动画对象 - (void)removeAllAnimations; //移除某个动画对象 - (void)removeAnimationForKey:(NSString *)key; /

1.1K20
  • 贝塞尔曲线之爱琴海 -- 定不负相思意

    addSublayer:gradientLayer]; } 二、新建爱心的类,并做初始化 爱心部分将采用贝塞尔曲线来绘制爱心的路径,并用动画的形式爱心在贝塞尔曲线上波动。...在类中定义一个初始化方法,该方法用于设置爱心能到达的最大高度和宽度,以及初始的位置和它的父视图。...所以这里我们封装一个方法,爱心随机放大。 当然,这要传入一个坐标。用来确定从哪个位置产生爱心。而这个爱心的宽度是随机的,所以也要创建一个随机的函数。...bezierPath.CGPath; keyFrameAnimation.fillMode = kCAFillModeForwards; //动画结束,layer会保存动画最后的状态 //运行一次是否移除动画...begin]; [CATransaction setCompletionBlock:^{ //UIViewAnimationOptionTransitionCrossDissolve是指旧视图溶解消失显示下一个新视图的效果

    868100

    iOS Core Animation:Advanced Techniques

    如果你想你做动画的图层响应用户输入,你可以使用-hitTest:方法(见第三章“图层几何学”)来判断指定图层是否被触摸,这时候对呈现图层而不是模型图层调用-hitTest:会显得更有意义,因为呈现图层代表了用户当前看到的图层位置...,而不是当前动画结束之后的位置。...使用presentationLayer图层来判断当前图层位置 - (void)viewDidLoad { [super viewDidLoad]; //create a red layer...同时你知道了UIKit是如何充分利用Core Animation的隐式动画机制来强化它的显式系统,以及动画如何被默认禁用并且需要的时候启用的。...最后,你了解了呈现和模型图层,以及Core Animation是如何通过它们来判断出图层当前位置以及将要到达的位置

    1.9K30

    iOS动画-CAAnimation使用详解

    ,只是为了动画看起来更直观); 3.创建用于显示飞机的视图,将其设置在贝塞尔曲线的初始位置; 4.创建并执行关键帧动画,实现飞机飞行的曲线动画; - (void)viewDidLoad {...如果我们知道如何对图层截图,我们就可以使用属性动画来自定义CATransition动画了。...CALayer有一个-renderInContenxt:方法,通过它可以将图层绘制到Core Graphics的上下文中捕获当前内容的图片;所以现在我们尝试这样的实现:对当前视图控制器View进行截图,...通常视图控制器本身会作为一个委托,但所有动画都会调用同一个回方法,所以我们需要判断到底是哪个图层的动画调用; 首先,动画本身会作为一个参数传入委托的方法,也许你会认为可以在控制器中把动画存储为一个属性...:移除所有动画 /* Remove all animations attached to the layer. */ - (void)removeAllAnimations; 关于移除动画的几点说明:

    2.3K10

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

    如果想图层保持显示动画执行后的状态,那就设置为NO,   不过还要设置fillMode为kCAFillModeForwards   fillMode : 决定当前对象在非activate时间段的行为。...= NO)   kCAFillModeRemoved : 这个是默认值,也就是说动画开始前和动画结束后,动画layer都没有影响;动画结束后,layer会恢复到之前的状态   kCAFillModeForwards...: 动画结束后,layer会一直保持这动画最后的状态   kCAFillModeBackwards : 在动画开始前,只需要将动画加入了一个layerlayer便立刻进入动画的初始状态并等待动画开始...  view : 需要进行转场动画视图   options : 转场动画的类型   animations : 将改变视图属性的代码放在这个block中   completion : 动画结束后,会自动调用这个...[self.imgView2.layer removeAllAnimations]; 311 } 312 313 //转场动画 314 - (void)trasactionAnimation{ 315

    1.4K30

    进阶|你的css经不住这层考验,就是失败...

    如何计算出每个动画运行时的帧率,这里我使用的是 requestAnimationFrame这个函数近似的得到动画运行时的帧率。...动画层级的控制的意思是尽量需要进行 CSS 动画的元素的 z-index 保持在页面最上方,避免浏览器创建不必要的图形层(GraphicsLayer),能够很好的提升渲染性能。...2.Graphics Layer 虽好,但不是越多越好,每一帧的渲染内核都会去遍历计算当前所有的 Graphics Layer ,并计算他们下一帧的重绘区域,所以过量的 Graphics Layer 计算也会给渲染造成性能影响...CSS 动画的元素的 z-index 保持在页面最上方。...2.Graphics Layer 不是越多越好,每一帧的渲染内核都会去遍历计算当前所有的 Graphics Layer ,并计算他们下一帧的重绘区域,所以过量的 Graphics Layer 计算也会给渲染造成性能影响

    67030

    盒子端 CSS 动画性能提升研究

    所以现在的关键是如何计算出每个动画运行时的帧率,这里我使用的是 requestAnimationFrame这个函数近似的得到动画运行时的帧率。...动画层级的控制的意思是尽量需要进行 CSS 动画的元素的 z-index 保持在页面最上方,避免浏览器创建不必要的图形层(GraphicsLayer),能够很好的提升渲染性能。...Graphics Layer 虽好,但不是越多越好,每一帧的渲染内核都会去遍历计算当前所有的 Graphics Layer ,并计算他们下一帧的重绘区域,所以过量的 Graphics Layer 计算也会给渲染造成性能影响...此时,层级关系才是我们希望看到的,.list 元素没有触发生成 Graphics Layer 。而我们希望需要硬件加速的 .swiper 保持在最上方,每次动画过程中只会独立重绘这部分的区域。...Graphics Layer 不是越多越好,每一帧的渲染内核都会去遍历计算当前所有的 Graphics Layer ,并计算他们下一帧的重绘区域,所以过量的 Graphics Layer 计算也会给渲染造成性能影响

    85760

    盒子端 CSS 动画性能提升研究

    所以现在的关键是如何计算出每个动画运行时的帧率,这里我使用的是 requestAnimationFrame 这个函数近似的得到动画运行时的帧率。...动画层级的控制的意思是尽量需要进行 CSS 动画的元素的 z-index 保持在页面最上方,避免浏览器创建不必要的图形层(GraphicsLayer),能够很好的提升渲染性能。...Graphics Layer 虽好,但不是越多越好,每一帧的渲染内核都会去遍历计算当前所有的 Graphics Layer ,并计算他们下一帧的重绘区域,所以过量的 Graphics Layer 计算也会给渲染造成性能影响...CSS 动画的元素的 z-index 保持在页面最上方。...Graphics Layer 不是越多越好,每一帧的渲染内核都会去遍历计算当前所有的 Graphics Layer ,并计算他们下一帧的重绘区域,所以过量的 Graphics Layer 计算也会给渲染造成性能影响

    2.3K130

    盒子端 CSS 动画性能提升研究

    所以现在的关键是如何计算出每个动画运行时的帧率,这里我使用的是 requestAnimationFrame这个函数近似的得到动画运行时的帧率。...动画层级的控制的意思是尽量需要进行 CSS 动画的元素的 z-index 保持在页面最上方,避免浏览器创建不必要的图形层(GraphicsLayer),能够很好的提升渲染性能。...Graphics Layer 虽好,但不是越多越好,每一帧的渲染内核都会去遍历计算当前所有的 Graphics Layer ,并计算他们下一帧的重绘区域,所以过量的 Graphics Layer 计算也会给渲染造成性能影响...此时,层级关系才是我们希望看到的,.list 元素没有触发生成 Graphics Layer 。而我们希望需要硬件加速的 .swiper 保持在最上方,每次动画过程中只会独立重绘这部分的区域。...Graphics Layer 不是越多越好,每一帧的渲染内核都会去遍历计算当前所有的 Graphics Layer ,并计算他们下一帧的重绘区域,所以过量的 Graphics Layer 计算也会给渲染造成性能影响

    74960

    iOS开发CoreAnimation解读之四——Layer动画内容

    - (void)animationDidStart:(CAAnimation *)anim; //动画结束后执行的回 - (void)animationDidStop:(CAAnimation *)...: //创建对象 参数中的path就是我们要执行动画的属性 //例如,如果传入@"backgroundColor" layer的背景颜色改变时,就会执行我们设置的动画 + (instancetype)...toValue不为空:动画的值由toValue-byValue变化到toValue 只有fromValue不为空:动画的值由fromValue变化到layer当前状态值 只有toValue不为空:动画的值由...layer当前的值变化到toValue 只有byValue不为空:动画的值由layer当前的值变化到layer当前的值+byValue 4.CAKeyframeAnimation关键帧动画         ...的不同之处在于layer层出现时,会产生动画效果,而并不是属性改变时,属性如下: /* 设置动画类型 //淡入  NSString * const kCATransitionFade;  //移入

    99610

    动画分析步骤“三步曲”

    本文的目标不仅仅是大家弄清楚动画效果是如何通过代码来实现的,更重要的是希望大家通过对本文的学习,掌握动画设计和分析的思路。并以这个思路为基础,设计更为复杂、绚丽的动画效果。...表1 6S下QQ图标移动效果:QQ图标x、y坐标随时间变化关系表 3.动画结束阶段 在动画效果结束之后没有触发新的回事件,只是更新了当前登录按钮的最后位置,所以图片最终停留在视图层的中间位置。...这四个属性表明当前UI在它的父控件上的位置,如self.view上。...3.Layer属性:圆角渐变、边框颜色、阴影、3D等高级动画效果 UIView是视图显示的容器,负责内容显示和事件响应。...每个UIView都有一个Layer图层,在这个图层中承载的是视图的内容,所以结合Layer可以实现很多高级的动画效果。当然除了这些之外,UIView还有很多其他属性,在后面的章节中会为大家一一呈现。

    89110

    iOS 事件处理机制与图像渲染过程

    CALayer类在概念上和UIView类似,同样也是一些被层级关系树管理的矩形块,同样也可以包含一些内容(像图片,文本或者背景色),管理子图层的位置。它们有一些方法和属性用来做动画和变换。...UIView和CALayer是一个平行的层级关系,每一个UIView都有一个CALayer实例的图层属性,也就是所谓的backing layer视图的职责就是创建并管理这个图层,以确保视图在层级关系中添加或者被移除的时候...一个触摸事件到来时,RunLoop 被唤醒,App 中的代码会执行一些操作,比如创建和调整视图层级、设置 UIView 的 frame、修改 CALayer 的透明度、为视图添加一个动画;这些操作最终都会被...简单的Off-Screen Rendering可以考虑使用Core GraphicsCPU来渲染。 Core Animation 1. 隐式动画 隐式动画是系统框架自动完成的。...最后附上一篇介绍Facebook Pop如何使用的文章 《Introducing Facebook Pop》 AsyncDisplay介绍 阻塞主线程的绘制任务主要是这三大类:Layout计算视图布局文本宽高

    5.5K100

    IOS开发系列——UIView专题之二:动画篇【整理,部分原创】

    UIView可以产生动画效果的变化包括: •位置变化:在屏幕上移动视图。 •大小变化:改变视图框架(frame)和边界。 •拉伸变化:改变视图内容的延展区域。...UIKit直接将动画集成到UIView类中,实现简单动画的创建过程。UIView类定义了几个内在支持动画的属性声明,这些属性发生改变时,视图为其变化过程提供内建的动画支持。...View Flip" context:nil]; //动画持续时间 [UIViewsetAnimationDuration:1.25]; //设置动画的回函数,设置后可以使用回方法 [UIViewsetAnimationDelegate...+ (Class)layerClass 返回值 一个用来创建视图layer的类 讨论 重写子类来指定一个自定义类用来显示。当在创建视图layer时候调用。默认的值是CALayer类对象。...讨论 如果设置为YES那么动画在运行过程中,当前视图位置将会作为新的动画的开始状态。如果设置为NO,当前动画结束前新动画将使用视图最後状态的位置作为开始状态。

    1.4K10

    Lottie动画原理

    ) { [self _setImageForAsset:layer.imageAsset]; } 填充图形:图层类型为形状shape时,shape是对矢量图的信息携带,这在lottie动画中被大量使用...:layer.shapes]; } 如何绘制矢量图  ?...CALayer添加动画 在上面讲述到绘制图层,但如何将这些图层变成动画呢,在了解之前我们得先知道CALayer方法重绘响应链与runloop机制,如何图层重新绘制呈现出新的画面,从而形成动画。...layer首次加载时会调用 +(BOOL)needsDisplayForKey:(NSString *)key方法来判断当前指定的属性key改变是否需要重新绘制,默认返回NO Core Animartion...以上讲述的是从AE导出JSON文件到OC读取后转成Model再到绘制图层动画的过程,这有助于我们理解一个动画的内部结构,可方便后续理解整个动画的运作,也对于我们实践开发中遇到的缺陷或者优有极大的帮助。

    5.6K71

    CAAnimation 核心动画概念一、 CAAnimation二、 CAPropertyAnimation三、CABasicAnimation(基本动画)CAPropertyAnimation的子类

    : 方法) 注意: 如果动画正在执行的时候, 将程序退出到后台, 那么程序再次进入前台的时候就不执行了。...如果想图层保持显示动画执行后的状态,那就设置为NO,不过还要设置fillMode属性为kCAFillModeForwards fillMode:决定当前对象在非active时间段的行为.比如动画开始之前...,动画结束之后 beginTime:可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime()+2,CACurrentMediaTime()为图层的当前时间 timingFunction...,并没有真正被改变.比如: CALayer的postion初始值为(0,0),CABasicAnimation的fromValue为(10,10),toValue为 (100,100),虽然动画执行完毕后图层保持在...[self.imgViewIcon.layer addAnimation:anim forKey:@"anim1"]; } ---- 七、UIView的类方法实现转场动画视图: + (void

    1.9K90

    动画| 金币抛入红包动画详解

    金币.gif 实现过程 在当前页面加载一个福袋的图片和再来一次的按钮。 在for 循环中使用延迟调用函数。每个函数的调用时间越来越靠后,达到依次出现的效果。...在每个延迟调用函数中创建一个金币的图片,并记录它的tag和最终的位置。 为这个金币图片随机生成开始位置,并根据开始位置和结束位置计算出控制点,利用这三点绘制二次贝塞尔曲线。...立即打开 //统计金币数量的变量 static int coinCount = 0; - (void)getCoinAction:(UIButton *)btn { //"立即打开"按钮从视图上移除...intValue] + 1; NSLog(@"KKK: %lf",CGRectGetMidX(self.view.frame)); //每生产一个金币,就把该金币对应的tag加入到数组中,用于判断金币结束动画时和福袋交换层次关系...*)anim finished:(BOOL)flag { if (flag) { //动画完成后把金币和数组对应位置上的tag移除 UIView *coinView

    1.5K50
    领券