1

Air bnb iOS アプリの開始時のアニメーションと非常によく似たアニメーションを作成しようとしています。

ここにアニメーションのビデオがあります:ビデオ

アイデアは、レイヤーがユーザーに非常に近いところから飛んで、遠くのサーフェスにくっつくのをシミュレートすることです。

の操作について話している記事をいくつか読んだことがlayer.transform.m34ありますが、より役に立ったのはthis oneです。

遠近法と z 軸の平行移動を適用することで、レイヤーを大きく見せることができました。

使用したコードは次のとおりです。

CALayer *aLayer = [CALayer layer];
aLayer.frame = ...
aLayer.backgroundColor = ...
CATransform3D perspectiveTransform = CATransform3DIdentity;
perspectiveTransform.m34 = 1.0f/-250.0f;
perspectiveTransform.m44 = 0.0f;
perspectiveTransform = CATransform3DTranslate(perspectiveTransform, 0.0f, 0.0f. -100.0f);
aLayer.transform = perspectiveTransform;

問題は、アニメーションを元に戻すことができないことCATransform3DIdentityです。私は CoreAnimation に慣れていないので、悪いアプローチを試みている可能性があります。誰かが私が間違っていることやより良い解決策を教えてくれれば、とても助かります。

前もって感謝します!

4

1 に答える 1

0

最初にレイヤーを作成し、それをレイヤー ツリーに追加する必要があります。レイヤーがレイヤー ツリーの一部になると、暗黙的なアニメーションが機能するはずです。

これを行う必要があるかもしれないと思います:

レイヤーを作成する レイヤーを親レイヤーに追加する 残りのアニメーション コードを performSelector:withObject:afterDelay: で実行します。これにより、暗黙的なアニメーションを実行するコードが実行される前に、システムがレイヤーをレイヤーに追加する機会が得られます。

于 2012-11-21T20:50:42.127 に答える