CADisplayLink 的时间动画和空间动画

阅读: 评论:0

CADisplayLink 的时间动画和空间动画

CADisplayLink 的时间动画和空间动画

本文的标题,全文:

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

CADisplayLink 基于位置的动画效果

引子:

小灰面试小白,

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

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

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

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

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

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

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

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

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

设置背景色为透明

因为动画是基于绘图 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

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

( 切题 &#

本文发布于:2024-02-04 13:27:12,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170708310055982.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:动画   时间   空间   CADisplayLink
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23