我有一个UIView子类,该子类绘制了一堆贝塞尔曲线(通常在其中10-20条左右)。目前,我只有一个CALayer进行所有绘图。现在,我希望能够分别为所有线宽设置动画。我当时正在考虑使用一堆CAShapeLayers,每个CAShapeLayers只能绘制一条贝塞尔曲线。 CAShapeLayer具有可设置动画的lineWidth属性。

我从这篇文章中得到了这个想法:Animating Pi Slices using a Custom CALayer

我担心的是这是否需要10到20倍的绘图内存,因为每个CAShapeLayers都会创建一个单独的绘图上下文,还是它们都将绘制到相同的上下文中并共享内存?

最佳答案

只要它们处于视图层次结构中,它们就各自在GPU上具有单独的存储,除非并且直到随后发生低内存警告。

话虽这么说,不要遭受过早优化的诅咒。如果这是表达动画的最简单,最直接的方法,那么应该是您所做的。如今,手机和平板电脑拥有大量存储空间。

10-08 01:07