使用 CALayer 显示 CGPaths 会影响 iOS 中的性能吗?

Posted

技术标签:

【中文标题】使用 CALayer 显示 CGPaths 会影响 iOS 中的性能吗?【英文标题】:Is using CALayer to display CGPaths affect performance in iOS? 【发布时间】:2013-04-16 09:34:17 【问题描述】:

我正在 ios 中使用 CGPath 绘制一些直线、曲线和省略号。我想为线条和曲线的渲染设置动画。

假设我想为视图中的 25 条曲线设置动画。使用 CALayer 为曲线制作动画是最好的解决方案吗?

如果创建25层来显示25行,会不会对内存造成负担。我假设使用带有填充和描边等方法的贝塞尔路径进行简单绘图比使用 CAlayer 消耗更少的内存。

【问题讨论】:

为什么不自己测量性能呢?在屏幕上为 25 条路径设置动画应该不会花费您很长时间来测试。 我也可以这样做..我也认为它肯定会产生影响..我想如果有人有测试经验我可以得到这个信息..谢谢我知道我自己可以.. "正在使用 CALayer 为曲线设置动画" 您打算如何为曲线设置动画?我可以想到不止一种方法使用 CALayers 来做到这一点 我打算使用 CAShapeLayer 并使用 CABasicAnimation 对其进行动画处理。还有其他方法可以实现吗? 有,但您可能应该从基本动画开始。 【参考方案1】:

从聊天中可以明显看出,OP 希望对路径进行动画处理,就好像它们被绘制一样,而不是对路径如何变化进行动画处理。

我建议阅读Animating the drawing of a CGPath with CAShapeLayer by Ole Begemann,其中解释了如何执行此操作。简而言之,为形状图层的strokeEnd 属性设置动画。


来自聊天:

答:当您说“我想为线条和曲线的渲染设置动画”时,您的意思是像有人用钢笔画它们一样绘制它们吗? oleb.net/blog/2010/12/…

问:好的,谢谢大卫..我希望它与您发布的链接类似..

答:第二个?

问:是的第二个..我希望曲线从开始位置到结束位置都有动画效果..谢谢你的好意。

【讨论】:

以上是关于使用 CALayer 显示 CGPaths 会影响 iOS 中的性能吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CGPaths 和 CAShapeLayers 动画绘制字母

两个 CGPaths / UIBeziers 之间的补间 / 插值

两条 CGpaths - 1 CAAnimation - 但应该重复第二条路径

iOS -- CALayer之简单的使用

CALayer:在图层内容上维护cornerRadius

CALayer 的 position和anchorPoint属性