通常の UIView クラス メソッドを使用して、いくつかのものをアニメーション化しようとしています。これらのアニメーション メソッドは、人気のあるiCarouselライブラリによって呼び出されるメソッドで呼び出しています。カルーセルをスクロールすると、アニメーションはすぐに完了状態になり、完了関数を呼び出します (アニメーションの期間は無視されます)。BOOL が true であるため、finished
アニメーションが中断されているようには見えません。
iCarousel のデリゲート メソッドの外部でこれらのアニメーションをトリガーすると、動作します。私は iCarousel を修正するつもりはありませんし、何かが壊れているとは思いません。内部のどのコードがアニメーションをすぐに完了させる可能性があるのか 、さらに興味があります。そして、問題を回避するために私ができること。
次に例を示します。
- (void)carouselCurrentItemIndexDidChange:(iCarousel *)carousel {
[UIView
animateWithDuration:5.0f
delay:0
options:
UIViewAnimationOptionCurveEaseOut |
UIViewAnimationOptionOverrideInheritedDuration |
UIViewAnimationOptionOverrideInheritedCurve
animations:^{
myView.alpha = 0;
}
completion:^(BOOL finished){
NSLog(@"Completed. Did it finish? %i", finished);
}];
}
最後の詳細:
iCarousel のドキュメントには、カルーセルの useDisplayLink プロパティを変更して、アニメーションとの競合を回避できることが記載されています。これは何の違いもないようです。
助けてくれてありがとう!