Swift抖动动画

article/2025/10/1 8:05:03

 

一、直接实现某个视图的持续抖动、只需要给视图的layer添加动画就行。

    /// 直接实现/// - Parameters:///   - repeatCount: 重复次数///   - duration: 持续时间///   - values:  //抖动幅度数组:不需要太大:从-15度 到 15度、再回到原位置、为一个抖动周期/// - Returns: 返回动画 CAKeyframeAnimationfunc shakeAnimate(repeatCount:Float,duration:CFTimeInterval,values:[Any]) -> CAKeyframeAnimation {let keyAnimation:CAKeyframeAnimation = CAKeyframeAnimation(keyPath: "transform.rotation")keyAnimation.delegate = self//开始时间keyAnimation.beginTime = CACurrentMediaTime()//持续时间 0.2keyAnimation.duration = durationkeyAnimation.values = values//重复次数 3keyAnimation.repeatCount = repeatCount//完成后是否移除keyAnimation.isRemovedOnCompletion = truereturn keyAnimation}

调用方式为

giftBtn.layer.add(self.shakeAnimate(repeatCount: MAXFLOAT, duration: 0.2, values: [-M_PI/12, M_PI/12,-M_PI/12]), forKey: nil)

代理中需要移除完成后的动画对象

    func animationDidStop(_ anim: CAAnimation, finished flag: Bool) {if flag {self.giftBtn.layer.removeAnimation(forKey: "transform.rotation")}}

 

二、实现间歇性的抖动动画、考虑了两种定时器

1、Timer 

 self.timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(animationBegin), userInfo: nil, repeats: true)@objc func animationBegin(){giftBtn.layer.add(self.shakeAnimate(repeatCount: 3.0, duration: 0.2, values: [-M_PI/12, M_PI/12,-M_PI/12]), forKey: nil)
}

2、DispatchSourceTimer

    /// 抖动动画/// - Parameters:///   - layer: 传入需要动画的视图的layer///   - values: 抖动周期点位 [-M_PI/12, M_PI/12,-M_PI/12]///   - duration: 一周期持续时间///func shakeAnimation(layer:CALayer,values:[Any],duration:CFTimeInterval){dispatchTimer = DispatchSource.makeTimerSource(flags:[], queue: DispatchQueue.global())/*deadline  计时器最迟开始时间;repeating 时间间隔;leeway 指的是一个期望的容忍时间,将它设置为1毫秒,意味着系统有可能在定时器时间到达的前1毫秒或者后1毫秒才真正触发定时器。*/dispatchTimer?.schedule(deadline: DispatchTime.now()+1, repeating: DispatchTimeInterval.seconds(2), leeway: .milliseconds(1))//执行timerdispatchTimer?.setEventHandler (handler: {[weak self] inDispatchQueue.main.sync {//抖动动画layer.add(self?.shakeAnimate(repeatCount: 3.0, duration: duration, values: values) ?? CAKeyframeAnimation(), forKey: nil)}})//开始执行dispatchTimer?.resume()}

Demo地址:https://github.com/HolothurianC/ShakeAnimation


http://chatgpt.dhexx.cn/article/PSaxHE7X.shtml

相关文章

os “抖动”与工作集

由于请求分页式虚拟存储器系统的性能优越,在正常运行情况下,它能有效地减少内存碎片,提高处理机的利用率和吞吐量,故是目前最常用的一种系统。但如果在系统中运行的进程太多,进程在运行中会频繁地发生缺页情况&#xf…

ADC 采样数据抖动

MSP430或STM32,在使用内部ADC出现的采样数据异常抖动问题 采样设计: 用于检测供电线路电流及电压。 产品运行在两种模式下,1、低功耗静态模式(仓储态),2、全功能全速运行模式(工作态&#xff09…

SiTime 硅晶振抖动定义和测量方法

1 简介 抖动是时钟信号边沿事件的时间点集合相对于其理想值的离散时序变量。时钟信号中的抖动通常是由系统中的噪声或其他干扰导致的。具体因素包括热噪声、电源变化、负载条件、器件噪声以及相邻电路耦合的干扰等。 2 抖动的类型 时钟信号抖动定义有多种主要是:…

如何理解相位噪声与时间抖动的关系?

每当介绍相位噪声测试方案时,都会提到时间抖动,经常提到二者都是表征信号短期频率稳定度的参数,而且是频域和时域相对应的参数。正如题目所示,相位噪声与时间抖动有着一定的关系,那么相噪是与哪种类型的抖动相对应&…

网络延时抖动

问题背景: 上线后延时抖动很频繁,正常延时为10ms左右,抖动时延达到300ms以上,严重影响了该业务的性能 问题结论:tcp传输报文段延时异常,传输内容越大,受网络影响越大 index模块延时正常&…

html图片抖动,css3图片抖动

受1楼启发Document .sdf{ width:500px; height:500px; overflow:hidden; margin:200px auto; position:relative; } .outter{ width:174px; height:155px; position:absolute; top:100px; left:200px; transition:all 1s ease; } .dd{ background:url(http://www.ppt123.net/be…

图像随机抖动算法

本文参考知乎博客:图像处理之 Dithering(https://zhuanlan.zhihu.com/p/110104674) 图像抖动(dithering)常用于颜色量化(color quantization)的后处理,即去除颜色量化产生的一些视觉…

时钟抖动

本文转载至:http://m.elecfans.com/article/646572.html 随着通信系统中的时钟速率迈入GHz级,抖动这个在模拟设计中十分关键的因素,也开始在数字设计领域中日益得到人们的重视。在高速系统中,时钟或振荡器波形的时序误差会限制一个…

图像“抖动”原理

转载自博主:NWSUAF_LiuZhenHua,博客地址:https://blog.csdn.net/wzz110011/article/details/78170516?biz_id102&utm_term%E5%8A%A8%E5%9B%BE%E6%8A%96%E5%8A%A8&utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~soba…

时钟抖动(Jitter)的基本概念 【转载】

时钟抖动(Jitter)的基本概念 李倩 发表于 2018-03-13 10:21:08 电子说 随着通信系统中的时钟速率迈入GHz级,抖动这个在模拟设计中十分关键的因素,也开始在数字设计领域中日益得到人们的重视。在高速系统中,时钟或振荡…

什么是抖动?什么叫抖动

什么是抖动?什么叫抖动 抖动的定义是“数字信号的各个有效瞬时对其当时的理想位置的短期性偏离”,这意味着抖动是不希望有的数字信号的相位调制。相位偏离的频率称为抖动频率,与抖动有密切关系的第二个参数称为漂移,把它定义为“数字信号的…

什么是进程的抖动 | 抖动现象

抖动现象是指如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将会很频繁地产生缺页中断 ,这种频率非常高的页面置换现象称为抖动。 也可以说:页面在内存与外存之间频繁调度,以至于调度页面所需时间比进程实际运行时…

APP运营推广:新APP建设之后该怎么做好品牌运营?

APP市场推广的方法和渠道非常多,但是并不是每一个渠道都是适用所有APP的;对于一个APP市场推广的人员来说,这是值得认真思考的问题!“多面出击”是大部分APP运营人员都会采取的方法,把能够想到能做到的各种方法途径都尝…

【创业说】零经验接手APP运营推广,聊聊这两个月我是怎么熬过来的

编者按:本文来自一位创业者的匿名投稿(反复强调不要公开自己的身份),讲述了自己离职创业,从零开始做APP推广,所经历的各种推广方式,并且根据自己的情况评估了各个渠道的效果,创业容易…

APP生存法则:教你如何快速找到APP运营推广的捷径

APP的运营是一个APP能否生存的主要依靠,在运营的世界里有八大黄金法则,小编认为任何APP都可以运营这八大法则来进行推广。下面我们来了解一下移动APP运营的八大法则。 1、运营与推广一样重要 App上线一定阶段之后(基本上在10用户万以上),App…

移动互联网APP运营技巧分享

资源共享是互联网发展这么多年以来的一大重要表现,如今随着移动手机的不断涌现出来,间接的也带动了移动互联网的的发展,移动互联网是未来的发展趋势,借助这一趋势,APP运营,俗话说“守业更比创业难”,APP营销重要的不是开发出实用的APP,更重要的是如何运营。APP运营是指…

如何用Xinstall来做一款App运营推广?

现在是移动互联网的时代,人们对于智能手机的依赖性越来越大,传统pc端的业务都开始加入到开发App的队伍中来,APP开发完之后,就要做APP推广了,APP推广的方式有很多,比如广播范围广、投放广告、人工转发、口碑…

盘点行业APP运营推广渠道有哪些

【活动盒子—APP活动运营工具】无论是什么样的行业,只要是有自己的APP应用,就需要寻找相关的行业APP运营推广渠道。那么在行业APP运营推广渠道中,作为APP运营人员的我们要怎么做呢? 【活动盒子】:http://www.huodonghezi.com/ 什…

运营老司机分享:APP运营推广那些事

不管是新的APP还是已经运营中的APP,都是需要进行拉新、促活和留存三个环节;现在的APP开发并不难,市场上有非常多成熟的APP第三方服务商,你只需要把你的开发需求提交上去,就会根据你的要求进行app开发;当然APP开发只是最基础的一步…

APP运营推广,如何做到“饱和攻击”

对于运营推广人员来说,一个APP推广项目拿到手,大部分就凭借着经验寻找各种各样的渠道进行推广;但是效果呢?大多数人还是没有很大的把握! 小编认为,一个APP项目拿到手首先就得明确APP目标用户群体是哪些&…