在不混合的情况下使不透明的UIView变暗

时间:2014-10-13 17:14:53

标签: ios uiimageview uikit opacity alphablending

我的应用程序的背景是不透明的UIImageView。在某些情况下,我想以一种动画的方式将其从全亮度变暗到约50%。目前我降低了视图的alpha属性,这很有效。因为视图后面没有任何东西,背景图像就会变暗。

然而,我一直在使用核心动画工具进行剖析,当我这样做时,我看到整个背景显示为混合。如果可能的话,我想避免这种情况。

在我看来,这在合成期间是可以实现的。如果视图是不透明的,则可以将黑色混合而不显示任何东西。没有必要混合它,只需调整像素值。

我想知道这是否是UIKit的GPU合成支持的东西。虽然混合不是很好,但它可能比更新CPU上的图像要好得多,所以我认为CPU方法可能不是一个好的替代品。

Another question询问此问题,并提出了一些建议,包括设置Alpha。没有人提出避免混合的机制。

1 个答案:

答案 0 :(得分:2)

这里的一个重要问题是,您是否希望更改使用黑暗的背景进行动画处理。

没有动画

准备两个不同的背景图像,然后在它们之间进行交换。 UIImage+imageEffects库有助于生成暗色图像,或者为您提供一些线索。

动画。

查看GPUImage - “基于GPU的图像和视频处理的开源iOS框架”。基于此,您可以以黑暗的方式将背景渲染到场景中。