仿滴滴抢单倒计时的Demo

本文介绍了一种用于滴滴应用中的倒计时视图实现方法。该方法使用CAShapeLayer绘制圆形进度条,通过计算特定角度对应的路径长度来动态更新进度显示。文章详细解释了如何利用余弦定理计算路径的起始和结束位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

滴滴里面有一个下单完成之后等待界面的倒计时转圈的视图...



就是这个...


原理:

通过CAShapeLayer层添加到自己自定义的视图layer上...

设置ShapeLayer的path...

他的路劲绘制一般通过UIBezierPath配合设置...

通过layer的StrokeEnd,StrokeStart设置path路径上的起点和终点...

可以直接通过设置这两个点就有平滑的东西效果...

先看效果...




看左边视图...

分成三部分...

红色进度变化的一个ShapeLayer...

底部灰色背景的一个ShapeLayer...

头部绿色方向的一个ShapeLayer...

主要是绿色的那部分是通过实时计算它的strokestart和strokeend来控制他始终就是那么一个长度...

说一下计算过程...



图中黄色为头部那个点(s1)...

灰色为底部大圆的四分之一(s2)...

要计算出这个s1的strokeStart,strokeEnd之间的差值就是需要计算出s2所在s1中周长所占的比例...

这个比例如果转化成弧度或者角度比的话就可以通过a角度来计算...

根据余弦定理:

cosa = (b*b+c*c-a*a)/(2*b*c)

就可得出a的弧度值...

换算比例就是stroke的start和end的差值...

主要代码:

    //计算这个point的start和end所占用这个角弧度值
    //余弦定理  cosc = (a*a + b*b - c*c)/(2*a*b);
    float radian = cosf((self.radius*self.radius+self.radius*self.radius - 
(self.pointRadius*2)*(self.pointRadius*2)))/(2*self.radius*self.radius);

    //头部点所占路劲的周长
    float offsetProgress = radian/(M_PI*2);


    _pointAnimatedLayer.strokeStart = _strokeEnd-offsetProgress;
    _pointAnimatedLayer.strokeEnd = MIN(_strokeEnd, 1);




项目下载:http://download.youkuaiyun.com/detail/hbblzjy/9581081

其中的CAShapeLayer-Progress....

如果需要的话 可以自己去改改...


文/T_aa(简书作者)
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
TP新版抢单系统,招财宝自由宝 HZ区块系统源码带门票支付与激活码功能源代码全开源无加密[Thinkphp 内核] 源码为原始版本 完整版本 为框架源码 如完善细节功能运营请自行修改二开 提示:程序为手机端访问 电脑端登录后显示下载页面 并非程序问题 源码更新日志: H5 APP,支持 IOS/ANDROID/PAD 自适应各版本 APP, 同时支持抢单模式和排单模式,!!三色开发创新, 在原来功能基础上,增加了门票兑换 增加了激活码兑换 增加了激活码前台与后台管理 完善了多级烧伤功能 增加了每天、每周、每月、不同级别会员的控盘额度功能 增加了订单自动拆分盘功能 增加了手动拆分功能 增加了老米***包功能 增加了商城、游戏平台接口功能 完善了在线举报、投诉功能 门票支付功能,带激活码功能,可以通过免费的激活码进行进场出场 ,也可以通过付费购买门票的方式限制进入出入,并可配置买入卖出门票的价格和倍数。比网上其他的只有激活码功能的强大太多了,修复了太多的 BUG,PC 和电脑端完美适配,所有的页面 BUG 和支付 BUG,以及手机端 BUG 都解决了,购买后可以提供安装配置技术支持,也可做二次定制开发。带安卓与 IOS 版 APP。 完善了网上其他代码中所有功能 BUG 完善注册登录不能用手机号问题 完善会员级别升级问题 完善自动匹配不成功问题 完善手机短信接口 完善一对一、一对多匹配功能 完善匹配后转账与确认收款功能 完善 PC 端页面显示若干 BUG 完善移动端页面适配,PC 与移动端均完美适配 新增门票功能 新增加订单自动拆分功能 新增多进单出,单出多进功能 新增加资金烧伤功能 新增 48 小时资金冻结回流功能 新增上级创建新用户需要激活码及激活码购买功能 新增激活码与门票混合使用功能 新增门票购买支付功能(支付接口已配置) 新增抢单市场功能 新增加付款确认投诉管理功能 新增加超时锁定帐户功能 新增加余额冻结功能 新增门票转账功能 新增门票对账功能 新增短信接口功能(短信接口已配置) 新增会员八级功能自动升级功能 新增买卖 M 包管理功能 新增首页展示功能 新增自动匹配手动匹配自动切换管理功能 新增 AJAX 页面无刷新管理功能
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值