画像のスライドショーを表示する必要があります。しかし、ある時点では、現在の画像と以前の画像しか知りません (メモリ管理のため)。次の画像をアニメーション (UIViewAnimationOptionTransitionCurlUp) で表示する必要があります。そして、アニメーションフレームを設定したいです(したがって、1つの画像が2より大きい、またはその逆の場合、アニメーションフレームは2つの画像の中で最大でなければなりません)。したがって、画面全体ではなく、画面の一部に UIViewAnimationOptionTransitionCurlUp が表示されるはずです。これが私のコードです:
slideShowView.frame = [self getBiggestFrame];
slideShowView.center = [self getCenter];
[UIView transitionWithView:slideShowView
duration:4.0
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^
{
[prevImageView removeFromSuperview];
[slideShowView addSubview:nowImageView];
}
completion:NULL];
アニメーション フレームは、slideShowView.frame に依存していると思います。同じサイズの画像をアニメーション化すると、すべて問題ありません。しかし、2 番目の画像の幅が最初の画像の幅よりも大きい場合、アニメーション全体で最初の画像が表示され、アニメーションの後にのみ最初の画像が消えます。
画像では、大きな画像の前に青い画像が見えます。しかし、この画像ではアニメーションはほぼ完成しており、青い画像は消えているはずです。これが問題です。アニメーションの長さを 10 に設定します。2 番目の画像がアニメーションなしの最初の画像の後ろに表示されることがわかります。そして、これらすべてが2番目の画像にアニメーション化されます