如何控制两个 UIImage 的无动画之间的淡入淡出?
Posted
技术标签:
【中文标题】如何控制两个 UIImage 的无动画之间的淡入淡出?【英文标题】:How to control crossfade between two UIImage's Without Animation? 【发布时间】:2014-03-17 14:46:34 【问题描述】:有很多关于UIImage
s 使用动画淡入淡出的帖子。但是我找不到如何控制交叉淡入淡出没有动画,而是我自己;例如,在0.0
和1.0
之间使用一个参数来控制淡入淡出的量。
我可以将两个UIImageView
s 放在一起并控制alpha
(顶部从1.0
到0.0
,底部在1.0
),但这不是正确的交叉淡入淡出AFAIK .
为了使它更形象化:屏幕上有一个滑块,它给出了一个介于0.0
和1.0
之间的值,上面是一个图像。我想要的是在最初显示的图像(当滑块为0.0
)和另一个图像(如果当滑块为1.0
时完全可见)之间交叉淡入淡出。因此,当您慢慢移动滑块时,您会看到另一张图片慢慢出现。
【问题讨论】:
How to crossfade between 2 images on iPhone using Core Animation的可能重复 @Bamsworld 我不希望动画控制交叉淡入淡出的量;我想使用参数自己控制它。清除吗? @Wain 我没有看到可以在0.0
和1.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 的无动画之间的淡入淡出?的主要内容,如果未能解决你的问题,请参考以下文章