ios - 带有流体/弹性笔画的圆圈
问题描述
我和我的团队正在为客户开发一个应用程序。我们正在尝试了解如何实现这种动画(仅参考圆圈笔划):
我们尝试使用 aCADisplayLink
来设置和更改圆圈,但它会产生非流畅的结果。我们找不到从“组件”创建一个圆圈UIBezierPath
并更改每个锚点的方法。
任何关于如何实现这种效果的建议,或者如何从不同的点构造一个圆,都将受到高度评价
最好的问候,
Roi 和团队
解决方案
我建议使用 Catmull-Rom 样条。这些允许您仅使用曲线上的点创建平滑曲线,而贝塞尔曲线要求您定义不在曲线上的控制点。
一旦你有了开始和结束CGPath
s ,就很容易创建CAAnimation
从它开始到结束状态的路径(尽管CGPath
只有在动画中的开始和结束路径具有相同数量和类型的点时,动画更改才能正确工作。 )
您可能也可以使用贝塞尔曲线,但您需要为圆生成控制点,并且它的形状是扭曲的。
查看这个使用 Catmull-Rom 样条线创建扭曲圆形的示例应用程序:
http://wareto.com/animating-shapes-using-cashapelayer-and-cabasicanimation
(用 Objective-C 编写,但技术在 Swift 中是相同的。)
一个带有 8 个控制点的 Catmull-Rom 样条曲线均匀分布在一个圆上,其中每个控制点中心的距离变化 ± r/12 似乎是正确的:
推荐阅读
- java - WebFluxConfigurer 在 Spring webflux 中因功能路由而损坏?
- node.js - UnhandledPromiseRejectionWarning:错误:表的权限被拒绝
- android - 任务 ':app:kaptDebugKotlin' 执行失败 - 使用 Hilt 时发生错误
- scala - 根据地图的内容更新数据框的行
- bootstrap-4 - 引导程序中“标签”和“输入”之间的间距
- flutter - 在 Flutter 中使用导入包的不同方法
- python - 如何组合多标签分类器的分数?
- scala - 类型不匹配。必需:布尔值,在 Scala 中找到:Future[Boolean]
- reactjs - 子类化反应原生组件不再起作用
- ios - 目前无法安装此应用程序 RCT-vibration