2013-03-24 45 views
0

我使用的是CAShapeLayer来显示随着用户在屏幕上跟踪他/她的手指而更新的路径。我想将此路径转换为包含路径的矩形。我可以计算矩形就好了;棘手的部分是动画转换。将任意形状的CGPath动画化为矩形

文档说这大约动画的CAShapeLayerpath属性:

如果两个路径具有不同数量的控制点或线段的结果是不确定的。

那么我该如何去增加更多的控制点到矩形CGPath?还是有更好的方法来实现这个动画?谢谢。 =)

回答

1

我认为你必须手动构建一系列矩形形式的线。迭代路径中的元素,计算要将该点转换为的边界矩形的位置,并将该段添加到新的矩形路径。您可能必须使用相同类型的元素(例如恰好形成直线的三次或二次Bézier曲线),以便控制点的数量相匹配。

动画完成后,如果需要,可以将路径重置为纯矩形。

+0

谢谢!我如何“计算你想要转换到的边界矩形上的哪个位置”? – fumoboy007 2013-03-24 18:37:22

+1

这是一个设计选择。您可以将任何给定的点水平或垂直翻译到最近的边缘。您可以沿径向将每个点从中心移开,直到它与边缘相交。您可以简单地计算路径的元素,并将假设的矩形大致等分为相同数量的节,并将每个元素映射到节。等你的选择将会影响路径的动画。换句话说,没有一种方法可以逐渐将任意路径转换为矩形。 – 2013-03-25 02:33:48