我的应用程序的背景是不透明的UIImageView
。在某些情况下,我想以动画方式将其从全亮度调暗至 50% 左右。目前我降低了 View 的 alpha 属性,效果很好。因为 View 后面没有任何东西,所以背景图像就会变暗。
但是,我一直在使用核心动画工具进行分析,当我这样做时,我看到整个背景显示为混合。如果可能的话,我想避免这种情况。
在我看来,这在合成过程中是可以实现的。如果 View 不透明,则可以将其与黑色混合,而后面没有任何东西显示出来。不需要混合,只需调整像素值即可。
我想知道 UIKit 的 GPU 合成是否支持这一点。虽然混合效果不是很好,但它可能比在 CPU 上更新图像要好得多,所以我认为 CPU 方法可能不是一个好的替代品。
Another question询问这个问题,并提出了一些建议,包括设置 Alpha。但没有人提出一种避免混合的机制。
最佳答案
这里的一个重要问题是您是否希望更改为使用深色背景进行动画处理。
非动画
准备两个不同的背景图像并在它们之间简单地交换。 UIImage+imageEffects
库可以帮助生成变暗的图像,或者给你一些线索。
动画。
看看GPUImage - “用于基于 GPU 的图像和视频处理的开源 iOS 框架”。在此基础上,您可以以变暗的方式将背景渲染到场景中。
关于ios - 在不混合的情况下使不透明的 UIView 变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26345355/