3

我正在玩 C4,似乎无法弄清楚为什么我的形状没有动画。如果我创建这样的形状:

self.theShape = [C4Shape ellipse:CGRectMake(100, 100, 2, 2)];

...然后打电话

[theShape setFrame:CGRectMake(200, 200, 50,50)];

形状不会改变大小。实施表明它应该,但我没有看到它。有什么我做错了吗?是因为我没有更新画布吗?

4

1 回答 1

1

在 C4 中,调用setFrame:C4Shape 对象不会对其进行缩放。

原因是改变 CAShapeLayer 视图的框架不会改变底层的贝塞尔形状本身......不像在图像上调用相同的东西。UIKit 将缩放图像和其他内容,但不会缩放贝塞尔曲线(据我所知)......

所以,如果它是一个矩形,调用:

[theShape rect:aNewFrame]

或者如果它是一个椭圆,调用:

[theShape ellipse:aNewFrame]

这种方法构造了一个新的形状,然后利用核心动画的能力来隐式地动画旧形状路径和新形状路径之间的过渡。

于 2012-04-20T20:54:24.250 回答