3

引き伸ばされた後、ビューを破壊するエフェクトを作成したい。

それは、風船のようなポップ、エクスポード、シャードへの分割など、単純に半分に分割してからフェードアウトするものまで、何でもかまいません。しかし、私はクォーツで似たようなものを見つけていないか、それを行う方法について多くのアイデアを持っています。

それぞれのビューは異なりますが、他に方法がない場合は、個別にアニメーション化できるいくつかのピースの背景を作成すると思います。

4

1 に答える 1

2

知る限り、この種の組み込み機能はありませんが、次の方法で正しい方向に進むことができます。明確な詳細を説明する時間はありませんが、少なくとも他の誰かがサンプル コードまたは別のアプローチを提供できるようになるまでは、いくつかの一般的なガイドラインを参考にしてください。

シンプルなパーティクル ジェネレーターを実装し、ビューを画像にレンダリングし、その画像をジェネレーターにフィードしてパーティクルを作成し、目的の効果に従ってアニメーション化するように思えます。

これを行うための既存のサードパーティ ライブラリが存在する可能性があります (そして、このようなものを実装する前に検索します)。それ以外の場合は、いくつかの方法があります。

ジェネレーターは画像を取得し、粒子の形状 (シャードなど) でいくつかのサブ画像を作成します。形状とサイズを把握するにはアルゴリズムが必要です。次に、画像に CAShapeLayer マスクを使用するか、実際に小さい画像をレンダリングします (1 つの画像オブジェクトをマスクを使用した複数の CALayers/UIImageViews のソースは、必要なピクセルのみを画面にコピーし、実際にはデータを複製しないように最適化されています。コード)。

ビュー/レイヤーのコレクションを取得したら、別のアルゴリズムを使用して、特定の効果の新しいサイズ/位置/回転を計算し、標準のアニメーション API を使用して、アルゴリズムによって提供されるコレクションのコンテンツを移動するだけです。繰り返しますが、実装は、実行する必要がある可能性のある最適化に依存します。CALayer を直接使用すると、UIImageViews のコレクションよりもパフォーマンスが向上します。

于 2012-10-19T20:28:39.273 に答える