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]

このアプローチでは、新しいシェイプを作成し、Core Animations機能を利用して、古いシェイプパスと新しいシェイプパスの間の遷移を暗黙的にアニメーション化します。

于 2012-04-20T20:54:24.250 に答える