0

コンテナビューの2つのサブビュー間でフリップトランジションを実行しています。コンテナビューはフルスクリーンではなく、View Controllerのルートビューではありません(これはそのサブビューであり、画面の下3分の1を占めています)。

フリップトランジションで切り替えられる2つの子ビュー(両方ともUIImageView)のうち、1つには2つの子があります(これもUIImageViewタイプです)。このサブビューは、移行の結果として「消える」ものです。

遷移が開始されるとすぐに、既存のUIImageViewインスタンスは正常に反転しますが、その2つの子はすぐに消えます。後半では、入力中のUIImageViewインスタンスが問題なく表示されます(子はありません)。

包含ビューをフルスクリーンで不透明にしてみましたが、効果はありません。contentMode、contentStretch、自動サイズ変更マスクについて読みましたが、そうではないようです。

古いスタイルのアニメーションブロックを使用しています。ブロック内のサブビューの開始/終了の非表示プロパティを設定し、ブロック内でサブビューを追加/削除しようとしましたが、結果は同じです。現代構文のObjective-Cコードブロックを使用してみましたが、それでも変更はありません。

4

3 に答える 3

0

UIImageViewとその子を2つの別々のUIViewに配置してみてください。これらのUIViewをフリックします-コンテンツが消えることはありません。

于 2011-03-16T05:22:13.670 に答える
0

私は答えを見つけました:アニメーションブロックが始まる直前に子が追加されていました(アニメーションブロックと同じメソッド内で、数行前)。

以前に(たとえば、-viewDidLoadで)他の子を追加することをテストしましたが、それらはアニメーション中に残ります。

私の推測では、ビュー階層の変更には、1行の「addSubview:」を超える非同期歳差運動が含まれ、新しい子はアニメーションの一部になるのに間に合いませんでした。アニメーションブロック自体は非同期ですが、コミットするまでにある程度の修正が必要です(ビュー階層構造など)。

于 2011-03-16T06:07:13.267 に答える
0

実際の問題は、アニメーションブロックを実行する直前の子の追加が表示されないことです。これは、コードが実際に表示されるメインの実行ループに最初に戻る時間がなかったためです。それらをviewDidLoadに追加すれば、問題ありません。ただし、アニメーションの直前にそれらを追加すると、それらの表示は基本的にアニメーションによって上書きされ、表示されません。

私はまったく同じ問題を抱えていて、UIViewFlipTransitionの迷惑なフラッシュで答えを見つけました。

幸運を!ハワード

于 2012-09-30T12:06:55.003 に答える