0

我正在使用 Nick Lockwood 的 iCarousel 来显示图像,当旋转木马停在图像上时,我需要在旋转木马后面的背景之间进行过渡。我正在使用 UIView 的 animateWithDuration,问题是动画完成会立即发生,因为 iCarousel 正在调用 [CATransaction setDisableActions:YES];

我删除了iCarousel的Step方法中对disableAnimation和enableAnimation的调用,现在我的过渡动画效果很好,但是我担心现在会丢失一些功能或出现奇怪的错误。

任何人都可以对此表示同意或提出不同的方法吗?

4

1 回答 1

1

[CATransaction setDisableActions:YES] 部分用于 Mac 支持,部分用于防止加载项目视图时出现奇怪的调整大小效果。如果您没有看到任何问题,那么禁用这些行可能是安全的,但如果您不必修改库,通常最好不要修改库,因为这会使以后升级到新版本变得更加困难。

你什么时候触发你的动画?如果您只希望在轮播停止时发生,那么正确的执行位置可能是

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

委托方法。如果你在那里这样做,你应该不会遇到动画停止的问题。如果您已经在那里执行此操作,并且仍然遇到问题,那么解决方法是将动画延迟到下一次 runloop 更新,您可以使用 GCD 执行此操作,如下所示:

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