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();
}
}
];
}
ラッパーが反転するのではなく、テーブル ビューが大きくなる原因は何ですか?
編集:
正確な問題をデモするビデオを作成しました。