首页
学习
活动
专区
工具
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; /

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

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

    858100

    iOS Core Animation:Advanced Techniques

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

    1.8K30

    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 计算也会给渲染造成性能影响

    65630

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

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

    2.2K130

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

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

    85060

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

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

    74460

    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;  //移入

    98310

    动画分析步骤“三步曲”

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

    88210

    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
    领券