仿滴滴抢单倒计时的Demo
2016-07-20 12:13
323 查看
滴滴里面有一个下单完成之后等待界面的倒计时转圈的视图...
就是这个...
原理:
通过CAShapeLayer层添加到自己自定义的视图layer上...
设置ShapeLayer的path...
他的路劲绘制一般通过UIBezierPath配合设置...
通过layer的StrokeEnd,StrokeStart设置path路径上的起点和终点...
可以直接通过设置这两个点就有平滑的东西效果...
先看效果...
看左边视图...
分成三部分...
红色进度变化的一个ShapeLayer...
底部灰色背景的一个ShapeLayer...
头部绿色方向的一个ShapeLayer...
主要是绿色的那部分是通过实时计算它的strokestart和strokeend来控制他始终就是那么一个长度...
说一下计算过程...
图中黄色为头部那个点(s1)...
灰色为底部大圆的四分之一(s2)...
要计算出这个s1的strokeStart,strokeEnd之间的差值就是需要计算出s2所在s1中周长所占的比例...
这个比例如果转化成弧度或者角度比的话就可以通过a角度来计算...
根据余弦定理:
就可得出a的弧度值...
换算比例就是stroke的start和end的差值...
主要代码:
项目下载:http://download.csdn.net/detail/hbblzjy/9581081
其中的CAShapeLayer-Progress....
如果需要的话 可以自己去改改...
文/T_aa(简书作者)
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
就是这个...
原理:
通过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....
如果需要的话 可以自己去改改...
文/T_aa(简书作者)
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
相关文章推荐
- Delphi实现毫秒级别的倒计时实例代码
- javascript 宝宝出生倒计时实现代码
- android倒计时控件示例
- C#基于TimeSpan实现倒计时效果的方法
- javascript电商网站抢购倒计时效果实现
- js简单倒计时实现代码
- js实现发送验证码后的倒计时功能
- 设置下载不需要倒计时cookie(倒计时代码)
- 基于Javascript实现倒计时功能
- 基于JavaScript实现网页倒计时自动跳转代码
- 一个不错的js html页面倒计时可精确到秒
- jQuery团购倒计时特效实现方法
- jQuery实现倒计时按钮功能代码分享
- jquery制做精致的倒计时特效
- jQuery基于扩展简单实现倒计时功能的方法
- jquery实现倒计时功能
- 利用jQuery实现漂亮的圆形进度条倒计时插件
- jquery实现可关闭的倒计时广告特效代码
- jQuery实现简单倒计时功能的方法
- JQuery实现的按钮倒计时效果