0

UIView.transitionFromView:toView:を使用して、ビューA-1と裏面ビューA-2の間でフリップトランジションを実行しようとしています。これらのビューには多数の兄弟があり、スーパービュー全体を回転させたくないので、A-1とA-2の両方を含むのに十分な大きさの一時的なコンテナービューをビュー階層に挿入し、A-1を挿入します。移行の直前にそれに。

問題は、トランジションが開始されるとすぐにビューA-1が見苦しいフラッシュで消えてしまうことですが、これは醜いです。一時的なコンテナビューに挿入すると消える可能性があると思いましたが(コンテナに追加すると、通常のスーパービューから暗黙的に削除されるため)、私が知る限り、その時点では発生していません。私が使用しているコードは次のようになります。

[container addSubview:fromView];
[self.view addSubview:container];

[UIView transitionFromView:fromView toView:toView duration:2
                   options:UIViewAnimationOptionTransitionFlipFromRight
                   ... ];

完了ルーチンでコンテナーのフックを解除して削除します。コードが実行される前にフラッシュの問題が発生するため、ここには表示されていません。

この問題を回避するには、CALayerレベルでこれを行う必要がありますか?ビューからビューへの遷移がどのように機能するかについて、私は何かを誤解していますか?どんな考えでもありがたいです、ハワード

4

1 に答える 1

1

とった!私は過去にこれに噛まれたので、知っておくべきでした(そして愚かにも、二度と同じ間違いをしないと思っていました.階層に移動し、「fromView」をコンテナーに移動するには、呼び出す必要があります

[self performSelector:@selector(doAnimation:) withObject:transitionInfo afterDelay(0)]

実際にアニメーションを実行する前に、更新された階層が再描画できるように、メインのランループに戻ります。「transitionInfo」引数は、「fromView」および「toView」引数をアニメーション ルーチンに渡すための単なる辞書です。

ハワード

于 2012-09-29T13:59:40.650 に答える