IOS 中动画的暂停与继续播放的详解

发布时间 - 2026-01-11 03:13:10    点击率:

IOS 中动画的暂停与继续播放的详解

在使用动画控制UI的时候,可能会碰到通过手势或其他方式要进行暂停正在进行中的动画,然后再继续。如手指按下时,暂停动画,手指离开时继续动画。

实现原理主要是通过UI的layer进行相关的控制。

暂停动画:

- (void)pauselayer:(CALayer *)layer 
{ 
  CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil]; 
  layer.speed = 0.0; 
  layer.timeOffset = pausedTime; 
} 

继续动画:

- (void)playlayer:(CALayer *)layer 
{ 
  CFTimeInterval pausedTime = [layer timeOffset]; 
  layer.speed = 1.0; 
  layer.timeOffset = 0.0; 
  layer.beginTime = 0.0; 
  CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime; 
  layer.beginTime = timeSincePause; 
} 

使用示例:

// 暂停 
[self pauselayer:self.label01.layer]; 
// 继续 
[self playlayer:self.label01.layer]; 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# IOS  # 动画  # 动画的详解  # 动画播放与暂停  # IOS动画效果源代码整理(粒子、雪花、火焰、河流、蒸汽)  # iOS Swift控制器转场动画示例代码  # iOS 控制器自定义动画跳转方法(模态跳转)  # iOS如何自定义控制器转场动画push详解  # iOS动画解析之圆球加载动画XLBallLoading的实现  # iOS如何为导航栏添加播放动画  # IOS登录页面动画、转场动画开发详解  # 如有  # 希望能  # 然后再  # 按下  # 谢谢大家  # 正在进行  # 主要是  # 疑问请  # brush  # class  # void  # cpp  # pauselayer  # pre  # UI  # strong  # layer  # br  # playlayer 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何发送系统通知?(Notification渠道示例)  Laravel如何使用查询构建器?(Query Builder高级用法)  使用Dockerfile构建java web环境  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  详解阿里云nginx服务器多站点的配置  JavaScript数据类型有哪些_如何准确判断一个变量的类型  如何选择PHP开源工具快速搭建网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何在Windows环境下新建FTP站点并设置权限?  如何在阿里云部署织梦网站?  手机软键盘弹出时影响布局的解决方法  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel如何与Pusher实现实时通信?(WebSocket示例)  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  5种Android数据存储方式汇总  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  如何在阿里云ECS服务器部署织梦CMS网站?  javascript读取文本节点方法小结  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Android使用GridView实现日历的简单功能  详解Android中Activity的四大启动模式实验简述  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Swift开发中switch语句值绑定模式  如何在Windows 2008云服务器安全搭建网站?  如何正确下载安装西数主机建站助手?  如何用5美元大硬盘VPS安全高效搭建个人网站?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何用好域名打造高点击率的自主建站?  Laravel集合Collection怎么用_Laravel集合常用函数详解  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  如何正确选择百度移动适配建站域名?  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  韩国服务器如何优化跨境访问实现高效连接?  如何快速重置建站主机并恢复默认配置?  利用vue写todolist单页应用  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel怎么实现验证码(Captcha)功能