0

Nick LockwoodのiCarouselを使用して画像を表示していますが、カルーセルが画像で停止したときに、カルーセルの背後にある背景を遷移させる必要があります。UIViewのanimateWithDurationを使用していますが、問題は、iCarouselが[CATransaction setDisableActions:YES]を呼び出しているため、アニメーションがすぐに完了することです。

iCarouselのdisableAnimationおよびenableAnimationinStepメソッドの呼び出しを削除しました。これで、トランジションアニメーションは正常に機能しますが、一部の機能が失われたり、奇妙なバグが発生したりする可能性があります。

誰かがこれに同意したり、別のアプローチを提案したりできますか?

4

1 に答える 1

1

[CATransaction setDisableActions:YES] は、一部は Mac をサポートするためのものであり、一部はアイテム ビューがロードされたときの奇妙なサイズ変更効果を防ぐためのものです。問題が見られない場合は、おそらくこれらの行を無効にするのが安全ですが、後で新しいリリースにアップグレードするのが難しくなるため、ライブラリを変更する必要がない場合は、通常は変更しない方がよいでしょう。

いつアニメーションをトリガーしますか? カルーセルが停止したときにのみ発生させたい場合、それを行う正しい場所はおそらく

- (void)carouselDidEndScrollingAnimation:(iCarousel *)carousel;

委任方法。そこで実行すれば、アニメーションが停止するという問題は発生しないはずです。すでに実行していて、まだ問題が発生している場合、次のランループ更新までアニメーションを遅らせることで回避できます。これは、GCD を使用して次のように実行できます。

dispatch_async(dispatch_get_main_queue(), ^{    
    //perform your animation code
});
于 2012-11-21T09:43:16.037 に答える