在旋转和移动时交换UIImageView的图像会留下原始图像的痕迹

时间:2011-07-12 19:32:30

标签: iphone ios ios4 animation uiimageview

我正在拍摄“翻转文本”图像并旋转它,同时在屏幕上向下移动并调整框架。我也在换取图像以获得不同但相似的图像。

除了图像交叉渐变仍然显示淡出的原始位置而不是跟随移动之外,一切都按指示工作。此屏幕截图显示了动画的原始状态,转换状态和结束状态,并清楚地显示了问题。

enter image description here

我的代码看起来像这样(logoImageUIImageView):

// Swap it
self.logoImage.image = [UIImage imageNamed:@"logo.png"];
CATransition *transition = [CATransition animation];
transition.duration = duration;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.logoImage.layer addAnimation:transition forKey:nil];


// Spin it
CABasicAnimation* spinAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
spinAnimation.toValue = [NSNumber numberWithFloat:6*M_PI];
spinAnimation.duration = duration;
spinAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
spinAnimation.removedOnCompletion = YES;
spinAnimation.fillMode = kCAFillModeForwards;
[self.logoImage.layer addAnimation:spinAnimation forKey:@"spinAnimation"];


// Shrink it and Move it
CGRect newFrame = [self logoFrameForInterfaceOrientation:self.interfaceOrientation];
[UIView animateWithDuration:duration
                      delay:0.0
                    options:UIViewAnimationCurveEaseOut
                 animations:^{
                     self.logoImage.frame = newFrame;
                 }
                 completion:nil];

如何让图像交换的交叉渐变到位?

1 个答案:

答案 0 :(得分:1)

尝试在完成块中交换图像。 (目前为零)

编辑: 如果它们大不相同,您可以使用第二个UIImageView。当你淡入时淡出一个。你可以在它们翻译时这样做,或者等待“缩小”的原件到达并淡出它,而“更好”的较小版本逐渐消失。

然后在该动画的完成块中删除不需要的额外视图。