如何在没有动画的情况下控制两个UIImage之间的交叉淡入淡出?

时间:2014-03-17 14:46:34

标签: ios iphone uiimageview uiimage cross-fade

有许多关于UIImage使用动画的交叉淡入淡出的帖子。但我找不到如何控制交叉渐变没有动画,而是我自己;例如,0.01.0之间的参数控制交叉淡入淡出量。

我可以将两个UIImageView放在一起,控制alpha(从1.00.0的最上面一个,1.0的最后一个}),但这不是一个正确的交叉淡化AFAIK。

使其更具图形:在屏幕上有一个滑块,其值介于0.01.0之间,上面是一个图像。我想要的是在最初显示的图像(当滑块是0.0)和另一个图像(如果滑块是1.0时完全可见时)之间交叉淡入淡出。因此,当您慢慢移动滑块时,您会看到另一个图像慢慢显示。

3 个答案:

答案 0 :(得分:5)

您可以使用图片查看alpha方法。这是多么正确取决于您正在寻找的效果。使用0到1之间的值使这种方法相对简单,是显而易见的选择。

您还可以查看将两个图像渲染到上下文中并使用CGContextSetBlendMode(可能还有kCGBlendModeMultiply)来合并图像。没有参数可供使用,因此您仍需要更改渲染的alpha以获得可接受的合并/淡入淡出。

答案 1 :(得分:2)

如果您使用两个具有清晰背景的UIImageView并改变0-1,1-0的alpha通道,您应该非常接近您正在寻找的效果。如果它们背后都有黑色背景,我发现效果会更好。它可能不是真正的交叉淡化,但对于大多数用途而言足够接近。

答案 2 :(得分:0)

为了达到这个目的,我使用了CATransition动画:
这是旧代码的片段

CATransition *fadeTransition = [CATransition animation];
fadeTransition.duration = 1.0f;
fadeTransition.type = kCATransitionFade;
fadeTransition.endProgress = 0.75;
[imageView setImage:/*YourImage*/];
[imageView.layer addAnimation:fadeTransition forKey:nil];

使用 - endProgress属性,您可以在完成之前设置结束,但我不清楚您想要实现的目标。