UIImage 视图从一个图像动画到下一个图像

Posted

技术标签:

【中文标题】UIImage 视图从一个图像动画到下一个图像【英文标题】:UIImage view animate from one image to the next 【发布时间】:2011-05-20 20:00:42 【问题描述】:

我想像 UIModalTransitionStyleCrossDissolve 那样在一秒钟内对 UIImageView 中的图像进行平滑动画处理。

目前,我有一个名为“imageView”的 UIImageView * 和一个名为“imageForState”的函数,它为我返回正确图像的 UIImage *。

所以我想做的是将图像 A 平滑地设置为图像 B(如果有的话)。

目前,我的功能是这样的:

- (UIImage *) imageForState
    NSLog(@"state: %d", [save state]);
    switch ([save state])          
        case 0:
        case 1:
            return [UIImage imageNamed:@"Sakuya_Debug.PNG"];
        case 2:
            return [UIImage imageNamed:@"Sakuya_2_Debug.PNG"];
        default:
            return NULL;
            //Never called
    


-(void) tap
    [imageView setAnimationImages:[NSArray arrayWithObjects:[imageView image], [self imageForState], nil]];
    imageView.animationDuration = 2.0;
    [imageView startAnimating];
    save.state++;

我的问题是,1.) 动画永远持续下去(当我将 imageView.animationRepeatCount 设置为 1 时,我又回到了第一个图像)和 b.) 动画不流畅;就像我会使用“setImage”一样;

我做错了什么?

【问题讨论】:

【参考方案1】:

我建议用两个 imageViews 和一个动画块来做。在以下示例中,我假设两个正方形图像的大小为 100 像素。如果您将两个 imageViews 添加为子视图,请确保在 imageA 之后添加 imageB 以便它覆盖它。

初始化imageViews:

UIImageView *imageA = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Sakuya_Debug.PNG"]];
UIImageView *imageB = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Sakuya_2_Debug.PNG"]];

// hide the second image
imageB.alpha = 0.0;

// put the image with the same size at same position
imageA.frame = CGRectMake(0.0, 0.0, 100.0, 100.0);        
imageB.frame = imageA.frame;

混合方法:

- (void)crossDissolveImageAtoB

    [UIView animateWithDuration:1.0 
                     animations:^
                         imageB.alpha = 1.0;
                     
                     completion:^(BOOL finished)
                         // do something after the animation finished, 
                         // maybe releasing imageA if it's not used anymore...
                     ];

【讨论】:

非常感谢。这真的推动了我前进。

以上是关于UIImage 视图从一个图像动画到下一个图像的主要内容,如果未能解决你的问题,请参考以下文章

如何从计数器更改UIimage视图中的图像

将图像转移到下一个 ViewController (Swift)

点击事件不会在动画图像视图上触发

为啥我的图像没有出现在 UIImage 视图中?

调用动画后 UIImage 视图重置

UIImage视图不显示图像