我想用UIImageView动画将图像更改为另一个:
[UIView transitionWithView:self.scrollView
duration:1
options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction
animations:^
{
self.imageView.image = image;
} completion:nil];
对于一个动画来说效果非常好。 但是如果我有一个或多个动画开始而第一个动画仍然在进行中我会得到一些有线行为,它看起来像某种跳跃或闪烁。 如果我在模拟器中使用慢动画,似乎第一个动画停止并向右跳到第一个动画的结束图像,然后从第二个动画开始。 有没有人知道如何防止这种情况发生?
答案 0 :(得分:4)
尝试告诉动画它应该从当前状态开始。 (UIViewAnimationOptionBeginFromCurrentState)
[UIView transitionWithView:self.imageView
duration:1
options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction
animations:^
{
self.imageView.image = image;
} completion:nil];
答案 1 :(得分:0)
试试这个
[UIView transitionWithView:self.imageView...
通过使用[UIView transitionWithView:self.scrollView...
,您基本上是在说“嘿,我想为整个滚动视图设置动画”,这可能是您不想要的。您始终只想为特定的已更改图像视图设置动画。
编辑:
看看这段代码。它执行在图像视图中更改图像的交叉渐变(交叉溶解)动画。它工作正常,我已多次使用此代码。
[UIView transitionWithView:imageView
duration:0.4
options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction
animations:^{
// Set the new image
// Since its done in animation block, the change will be animated
imageView.image = newImage;
} completion:^(BOOL finished) {
// Do whatever when the animation is finished
}];
如果我理解你的问题,可以解释问题的原因:
[UIView transitionWithView:self.scrollView
为整个滚动视图启动动画。交叉溶解动画包括以下步骤:
在这里,您可以看到问题的来源。您可能混合了由不正确定义的动画块视图(整个滚动视图而不仅仅是内部图像视图)导致的多个滚动视图动画(交叉淡入淡出)