1

iCarousel ライブラリを使用して、カバーフローのような UI を表示しています。iCarousel サブビューを直接アニメーション化すると爆発する傾向があるため、アニメーションのラッパーを作成し、その中にタップされたカバーのように見えるサブビューを貼り付けます。次に、実際の iCarousel ビューを非表示にして、その上に偽のカバーをアニメーション表示します。

UIViewの方法を使用しtransitionWithView:duration:options:animations:completion:ていますが、問題が発生しています。画面上の別のビューを初めてアニメーション化すると、そのビューはアニメーションなしで表示されます。アニメーション化すると、ビューが正しく反転して非表示になります。

私のビュー階層は次のとおりです。

  • nibからロードされたメインビュー
  • ラッパー ビュー
    • 移行するビュー
    • 遷移するビュー

私が移行しようとしているビューは、UITableViewController サブクラスを含む UINavigationController のビューです。最初のアニメーションの代わりに、UINavigationController が表示され、ステータス バーが占めるスペースを占有しているかのように、ビューが少し上に伸びます。

テーブルビューがこのようにアニメーション化される理由は何ですか? wantsFullscreen(明示的には使用していませんが、封じ込め API および/または を疑っています。ビューを 経由でラッパーにインストールするだけaddSubview:です。)

これが私の「フリップイン」コードで、最初以外は毎回アニメーション化されます。

- (void) flipInWithCompletion:(MBTransitionCompletion)completion {
BOOL displayingPrimary = [self isDisplayingPrimaryView];

UIView *frontView = [self frontView];
UIView *backView = [self backView];
UIView *wrapperView = [self wrapperView];

[wrapperView addSubview:frontView];

[UIView transitionWithView:wrapperView
                  duration:0.8
                   options:UIViewAnimationOptionTransitionFlipFromRight
                animations:^{
                    [wrapperView addSubview:backView];
                    [frontView removeFromSuperview];
                }
                completion:^(BOOL finished) {
                    [self setIsDisplayingPrimaryView:!displayingPrimary];
                    if (completion) {
                        completion();
                    }
                }
 ];

}

ラッパーが反転するのではなく、テーブル ビューが大きくなる原因は何ですか?

編集:

正確な問題をデモするビデオを作成しました。

4

1 に答える 1

1

アニメーションを開始する前に、ビューが適切に読み込まれていないようです。以前にも同様の問題があったことを覚えていると思います。最初にビューに追加してから削除し、所定の位置にアニメーション化して修正されるかどうかを確認してください。

これは実際の解決策ではありませんが、何が問題なのかについての手がかりが得られるはずです。

于 2013-01-06T15:41:50.947 に答える