2012-02-09 3 views
3

パスアプリケーションでエフェクトを再現しようとしました。写真/ビデオをタップすると、タップしたものだけがフェードインされ、フルスクリーンになります。フェードイン/アウトフルビューを1つのサブビューで実行する

メインビューのアルファベットを変更すると、すべてのサブビューに表示されているものも含めて影響を受けるため、そのような効果がどのように行われるのだろうか。 forループを実行して、すべてのサブビューのアルファ値を変更すると、写真の背景色は変わりません。

私が考えることができる唯一の方法は、すべてのサブビューを通してforループを実行し、背景色を黒に設定することです。しかし、私の意見では、それは本当にクリーンなコードではありません。

あなたはどう思いますか?

答えて

0

ユーザーがクリックすると、すべてのビューのアルファ値が変更され、同じイメージの新しいビューが最高解像度で追加されます。 0.5アルファで白の背景にはすべての前にUIViewを置くことについては何

2

(これは0-> 0.5からアニメ化することができますが、あなたがしたいフェード効果を得るために)。

次に、その写真の前にフェードアウトしないように写真を移動し、影響を受けないようにします。

4

説明のために、小さな画像のグリッドを含む「サムネイル」ビューと、画面を満たすためのサイズと位置をアニメーション化する「詳細」ビューの2つのビューを考えてみましょう。

これらのビューを別々に考えることで、アニメーションの管理が容易になります。 「サムネイル」ビューのアイテムをクリックすると、そのビューがフェードアウトし、クリックされたアイテムのコピーを含む新しい「詳細」ビューが同じ位置に表示され、フルスクリーンにアニメーション表示されます。

+0

厳密に言えば、パスエフェクトを取得するには、イメージビューを削除して上に追加する必要があります(別のコピーではありません)。それはフレームから分離し、画像が以前に「マウントされた」灰色の背景を残します。 – Prometheus

1

ここで私はこれについてどうやって行くのですか。

  1. スクロールビュー(オプション)スクロールされていない場合、アクションにのみ可能であることを確認してください
  2. 無効に変換する方法(「convertRect:fromViewを:」座標のUIViewを使用し
  3. スクロールビューのスクロールと "convertRect:toView:")、画像ビューの新しいフレームを計算します。新しいターゲットスーパービューは、アプリケーションのkeyWindow、または必要に応じて別のフルスクリーンサブビューにすることができます。いくつかのビュー(フレームビュー、可能なテーブルセルコンテンツビュー、スクロールビューなど)があるので、これを行うにはいくつかの方法があります。そのため、迅速に理解するのに役立つテストを計画することをお勧めします期待された座標変換と実際の座標変換があるとき。
  4. ため)リサイズ(および必要に応じて回転する、背景のアルファ= 0(アニメーションを追加フルスクリーン表示に変換矩形の画像ビューを追加するかkeyWindow
  5. そのスーパー
  6. から画像ビューを削除画像ビュー)。以前は画像ビューを保持していたビューコントローラのアルファ= 0をアニメートすると、背景に黒い背景がある別のビューがある限り、黒く消えてしまいます。また、View Controllerで2つのビューをホストすることもできます.1つはプレーンなUIView、もう1つは(黒の上に)フェードしたいすべてのビューをホストします。次に、その1つのビューでアルファを変更するだけで、すべてのサブビューが消えます。
関連する問題