如何控制两个 UIImage 的无动画之间的淡入淡出?

Posted

技术标签:

【中文标题】如何控制两个 UIImage 的无动画之间的淡入淡出?【英文标题】:How to control crossfade between two UIImage's Without Animation? 【发布时间】:2014-03-17 14:46:34 【问题描述】:

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

我可以将两个UIImageViews 放在一起并控制alpha(顶部从1.00.0,底部在1.0),但这不是正确的交叉淡入淡出AFAIK .

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

【问题讨论】:

How to crossfade between 2 images on iPhone using Core Animation的可能重复 @Bamsworld 我不希望动画控制交叉淡入淡出的量;我想使用参数自己控制它。清除吗? @Wain 我没有看到可以在0.01.0 之间设置的参数,用于控制交叉淡入淡出的量。这不是你所说的重复。 如果您使用两个具有清晰背景的 UIImageView 并将 alpha 通道从 0-1、1-0 变化,您应该非常接近您正在寻找的效果。我发现如果它们后面都有黑色背景效果会更好。它可能不是true 淡入淡出,但对于大多数用途来说已经足够接近了。 @David 听起来不错,我要试试。请作为答案,我会奖励你:-) 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

如果您使用两个具有清晰背景的 UIImageView,并在 0-1、1-0 之间改变 alpha 通道,您应该非常接近您正在寻找的效果。我发现如果它们后面都有黑色背景效果会更好。这可能不是真正的淡入淡出,但对于大多数用途来说已经足够接近了。

【讨论】:

这很好用,而且背面的黑色确实看起来最好。谢谢!【参考方案3】:

为了实现这一点,我使用了 CATransition 动画: 这是来自旧代码的 sn-p

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 属性,您可以在完成之前设置结束,但我不清楚您想要实现什么。

【讨论】:

对不起,如果我没有提供帮助,但我认为这不是获得更多帮助的正确态度。干杯

以上是关于如何控制两个 UIImage 的无动画之间的淡入淡出?的主要内容,如果未能解决你的问题,请参考以下文章

带有动画的不同图像之间的 UIImageView 过渡

Swift : 动画 SKSpriteNode 渐变

如何根据另一个文件的下载进度淡入 UIImage

如何使用 cocoalibspotify 进行音频交叉淡入淡出?

(Swift)淡入淡出标签[重复]

Lottie 动画加载时如何淡入淡出?