仿滴滴抢单倒计时的Demo

2023-05-16

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

就是这个...


原理:

通过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(简书作者)
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仿滴滴抢单倒计时的Demo 的相关文章

随机推荐

  • Gazebo 学习笔记之构建一个Robot 1:模型目录的结构和要求

    文章目录 概述1 模型数据库存储库2 模型数据库的结构2 1 插件目录2 2 Meshes 目录2 3 Material 目录2 4 数据库配置 Database Config2 5 模型配置 Model Config2 6 模型 SDF2
  • 已解决:Android Studio 报错No IDEA annotations attached to the JDK 1.8, some issues will not be found

    今天把sdk删了 xff0c 重装 xff0c 然后打开AS后发现 No IDEA annotations attached to the JDK 1 8 some issues will not be found 的警告 项目无法运行 x
  • Android Studio配置模拟器AVD移动至其他盘

    平时我们在Android Studio中使用的模拟器 xff0c 这些模拟器会在C盘中创建模拟器镜像文件 在C Users UsersName android中 xff0c avd文件夹就是用来存放模拟器镜像文件的 xff0c 为了节省c盘
  • Python3 虚拟环境激活

    如果你正在使用Python3 xff0c 虚拟环境已经成为内置模块 xff0c 可以直接通过如下命令来创建它 xff1a python3 m venv venv 注 xff1a 这个命令不一定能够执行成功 xff0c 比如译者在Ubuntu
  • 培训机构众多,如何选择优秀嵌入式培训机构?

    为什么说选择一个优秀的 专业的嵌入式培训学校很重要 xff1f 选择优秀的嵌入式培训学校 xff0c 学习嵌入式技术 xff0c 您将可能找到一份好工作 xff0c 得到10倍 xff0c 甚至100倍价值回报 xff1b 从此你将有独立生
  • 接口防重方案设计

    幂等性原理 xff1a 前台的多次请求 xff0c 对于后台 xff0c 也是同一次请求 xff1b 通常接口设计方式 xff1a 1 前端的页面提交按钮置灰 xff0c 防止用户重复点击 xff1b 2 对前端提交的token进行校验 x
  • 微信小程序-轮播图实现

    好久不见 xff0c 今天小h来分享一下如何实现一个微信小程序的轮播图实现方式 xff1a 前提条件是具有微信开发者工具 xff0c 还有对应的开发者ID xff0c 这些基础条件我这边就直接跳过了哈 xff0c 直接进入正题 xff1a
  • 所以,到底什么是微服务?

    1 微服务是一种软件架构 xff0c 是聚焦在单一的职责和业务功能 xff0c 具有独立的进程 xff0c 能够单独运行的服务 xff0c 并且与外部服务是通过HTTP进行交互通信的服务 2 微服务比较常见的特性是 xff0c 具有单一职责
  • 关于云服务Bmob的使用方法(上)——上传数据

    关于第三方云服务平台Bmob是怎样使用的 xff1f 我们从两个方面来写 xff0c 一个是传输数据 xff0c 一个是传输文件 第一个是关于bmob传输数据的 xff0c 首先我们在官网http www bmob cn 上面注册我们自己的
  • 关于云服务Bmob的使用方法(下)——上传文件

    上一篇我们说了如何传输数据 xff0c 那么这一篇我们进阶一下 xff0c 来谈谈如何传输文件 xff0c 比如图片 关于如何在bmob上注册和申请 xff0c 上一篇已经有说明 xff0c 不懂的读者可以去看看 xff0c 然后我们直接进
  • 使用栈模拟递归的算法

    这一篇笔者要讲的是如何用栈来模拟递归 xff0c 或者说替代递归的算法 xff0c 现在我们假如要算从三角形数的叠加 xff0c 比如输入10 xff0c 输出是55 xff0c 输入是100 xff0c 输出是5050 xff0c 等等
  • 使用 catkin 的方式创建自定义的 ros 消息

    文章目录 1 写在前面2 创建自定义消息2 1 创建 ros 包2 2 创建 msg 文件2 3 修改 package xml 文件2 4 修改 CMakeLists txt 文件 3 生成 msg 代码文件 1 写在前面 消息文件是描述R
  • "我"与AI

    有人说过 xff0c 在这世界上 xff0c 一共有10种人 xff0c 一种是懂二进制的 xff0c 一种是不懂的 其实 xff0c 在不远的未来 xff0c 这个世界多了两种机器 xff0c 懂AI的 xff0c 以及不懂的 在如今的互
  • java集合篇(一)——ArrayList扩容原理

    相信大家都对ArrayList相当熟悉了 xff0c 今天笔者就对ArrayList的源码进行解读 xff0c 讲解一下对ArrayList扩容的基本原理 虽然大家都有用过 xff0c 但还是简单介绍一下吧 xff0c ArrayList实
  • 怎样快速开发一个 Dubbo 应用?

    背景 本文将以 Dubbo 为例 xff0c 介绍如何快速开发一个 Dubbo 应用 为了便于读者理解 xff1a 首先会介绍一下传统的 RMI 的基本概念 然后比较下现代的 RPC 框架与 RMI 的区别 再基于 Dubbo 提供的 AP
  • 百度历届笔试题(1)

    题目描述 牛牛和妞妞正在玩一个猜数游戏 xff0c 妞妞心里想两个不相等的正数 xff0c 把这两个正数的和y告诉牛牛 妞妞声称这两个数都不超过x xff0c 让牛牛猜这两个数是多少 牛牛每猜一次 xff0c 妞妞会告诉他猜对了还是猜错了
  • 最佳线性无偏估计BLUE

    最佳线性无偏估计BLUE 1 定义 xff1a 线性估计是参数估计最重要的一类 xff0c 应用 广泛 如果对参数x 的估计可以表示成为量测信 息的线性函数就是线性估计 而线性无偏最小方差估计称为BLUE Best Linear Unbia
  • 手把手教你使用CMake自动编译中CMakeLists.txt 怎么写

    背景 CMake 一直都是用别人的开源项目来编译 Makefile都是自己写 最近看zlm源码 里面用的CMake编译 比较简洁易懂 所以有尝试给现有项目也写个CMakeList txt来使用cmake自动编译 跟它耍耍 基础语法介绍 主要
  • 巧用snprintf动态打印任意长度的buf

    Q xff1a 调试程序的时候 xff0c 经常需要对传入的连续地址空间或数组进行打印 xff0c 常规做法是起一个for循环 xff0c 在每次循环中调用printf依次打印每个数组下标的值 就像这样 xff1a char Buf 99
  • 仿滴滴抢单倒计时的Demo

    滴滴里面有一个下单完成之后等待界面的倒计时转圈的视图 就是这个 原理 xff1a 通过CAShapeLayer层添加到自己自定义的视图layer上 设置ShapeLayer的path 他的路劲绘制一般通过UIBezierPath配合设置 通