CADisplayLink 的时间动画和空间动画

2023-12-06 07:40

本文主要是介绍CADisplayLink 的时间动画和空间动画,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文的标题,全文:

CADisplayLink 基于时间的动画效果,和

CADisplayLink 基于位置的动画效果

引子:

小灰面试小白,

问: “以前美团的 tabbar , 有一个点击选项卡,选项卡拱起”

“就是矩形局部拱起的效果,怎么实现”

小白:“Open GL, 研究没这么深,再见”

小灰: "使用 CADisplayLink + 子定制绘图,也可以做 "

小灰: “面试的开发者,把没思路的技术,归结于他没学过的。杯具”

基于时间的 CADisplayLink 动画效果, 局部拱起

例子: 矩形框,分左右。点击哪一边,那边拱起来

如下图: 左边拱起来,效果

截屏2021-09-28 下午5.22.51.png

辅助方法: 识别点击的哪一边

设置背景色为透明

因为动画是基于绘图 drawRect

@objc func tap(with gesture: UITapGestureRecognizer){guard !jelly.animating else{ return }let point = gesture.location(in: partial)let width = partial.frame.widthlet isRight = point.x > width / 2let idx = isRight ? 1 : 0partial.backgroundColor = UIColor.clearpartial.startAnimation(idx)}

主要逻辑

两个辅助状态保存类,省略了,

具体见 github repo

  • drawRect 绘图,只可在 bounds 里面,

所以 view 要预先留一个空档

可通过上文的边框线,理解

  • CADisplaylink 使用的间隔时间,是屏幕的帧率

不可手动设置

就要把基于时间的动画,其持续时间,转化为一定的次数

( 从 from 的状态, 到 to 的状态 )

设置精确的 duration ,还要保证动画平顺,有难度

这里 total = time * 20 , 给予了一定的次数,消费完,就结束

具体见 github repo

  • 局部拱起,是基于时间的

( 切题 &#

这篇关于CADisplayLink 的时间动画和空间动画的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/460988

相关文章

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

MySQL启动报错:InnoDB表空间丢失问题及解决方法

《MySQL启动报错:InnoDB表空间丢失问题及解决方法》在启动MySQL时,遇到了InnoDB:Tablespace5975wasnotfound,该错误表明MySQL在启动过程中无法找到指定的s... 目录mysql 启动报错:InnoDB 表空间丢失问题及解决方法错误分析解决方案1. 启用 inno

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

MySQL表空间结构详解表空间到段页操作

《MySQL表空间结构详解表空间到段页操作》在MySQL架构和存储引擎专题中介绍了使用不同存储引擎创建表时生成的表空间数据文件,在本章节主要介绍使用InnoDB存储引擎创建表时生成的表空间数据文件,对... 目录️‍一、什么是表空间结构1.1 表空间与表空间文件的关系是什么?️‍二、用户数据在表空间中是怎么

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

CentOS7增加Swap空间的两种方法

《CentOS7增加Swap空间的两种方法》当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swa... 目录在Centos 7上增加Swap空间的方法方法一:创建新的Swap文件(推荐)方法二:调整Sww