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

就是这个...
原理:
通过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.csdn.net/detail/hbblzjy/9581081
其中的CAShapeLayer-Progress....
如果需要的话 可以自己去改改...
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
仿滴滴抢单倒计时的Demo的更多相关文章
- Flutter 仿滴滴出行App
绿色出行 Flutter 仿滴滴出行App 地图:采用高德地图,仅简单完成了部分功能,基础地图,地址检索,逆地理编码. 界面:仿滴滴主界面,地图中心请求动效果,服务tabs展开效果,地址检索界面,城市 ...
- 毫秒倒计时小Demo
Demo截图: Demo:Demo 上代码: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- Android自定义View——仿滴滴出行十大司机评选活动说明
滴滴出行原版图 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 仿图 ? ? ? ? ? ? 1.分 ...
- 仿糯米弹框效果demo
代码例如以下: <!doctype html> <html lang="en"> <head> <meta charset="U ...
- C# 仿360悬浮球开发demo程序
https://files.cnblogs.com/files/wohexiaocai/%E4%BB%BF360%E5%8A%A0%E9%80%9F%E5%99%A8.zip
- js 实现仿 淘宝 五星评价 demo
<style> @font-face { font-family: 'iconfont'; /* project id 247957 */ src: url('//at.alicdn.co ...
- html5的audio实现高仿微信语音播放效果Demo
HTML部分: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...
- nodejs+react构建仿知乎的小Demo
一.命令行进入指定项目文件夹 二.相关命令安装环境和项目工具 npm init npm install react -- save npm install -g gulp npm install -- ...
- 简单的计时器 (倒计时)--html Demo
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content ...
随机推荐
- PHP Zip File 函数
通过 PHP 中的相关函数,你可以实现 zip 文件的解压缩操作! PHP Zip File 简介 Zip File 函数允许您读取压缩文件. 安装 如需在服务器上运行 Zip File 函数,必须安 ...
- Elastic-Job——分布式定时任务框架
摘要: Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架.去掉了和dd-job中的监控和ddframe接入规范部分.该项目基于成熟的开源产品Quartz和Z ...
- Spring常用配置
----------------------------------------------------------------------------------------------[版权申明: ...
- Dynamics CRM2016 Set Values of all Data Types using Web API
之前的博客里有谈到了web api的增删改查,里面会涉及到各种类型字段的赋值,因为时间和精力关系,没有对所有的字段类型一一测试,这篇博文中给出了全部的 http://inogic.com/blog/2 ...
- java记事本开发
今天我想要分享的是一个用java写的一个记事本程序.我知道现在市面上有各种各样的记事本了,但是我发现有的写的功能不够完善,或者是代码层次结构不够清晰,有的甚至看了之后云里雾里的,有的还不乏了非常明显的 ...
- ubuntu垃圾清理命令
ubuntu的空间莫名不够用了 通过系统自带的工具磁盘使用分析器,发现var文件下面的log100多个g,这个日志文件是可以删除的,然后tmp文件也是可以删除的. 1.sudo rm -rf /tmp ...
- Gradle 1.12用户指南翻译——第五十一章. 发布构件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...
- Dynamics CRM EXCEL导入数据字段类型为选项集时的注意事项
在开始先展示下CRM的导入数据涉及选项集字段时的一个问题 下图是选项集字段的属性 下图是我要导入的excel中的列值,可以看出列明和字段名是一致的,而列值却不是选项集中已有的选项 在导入校验时,只要字 ...
- Android自定义View(二、深入解析自定义属性)
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51468648 本文出自:[openXu的博客] 目录: 为什么要自定义属性 怎样自定义属性 ...
- Makefile自动生成
automake/autoconf入门作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile ...