之前曾被问过,但我还没有找到满意的答案。真的没有办法为UIView设置混合模式(即使用GPU合成来实现混合)。
[有些建议使用CGContextSetBlendMode,如下所示:Draw an image in Additive Blend Mode without using OpenGL,但是到目前为止,我偶然发现的所有这些解决方案似乎都使用绘图例程,并且据我所知(以及我的性能指标表明),这将完成混合在CPU上(并且之后将其上传到OpenGL纹理以显示)。
但是afaik UIKit使用OpenGL来呈现底层的CALayers,因此在此使用单独的混合模式应该是世界上最简单的事情。
由于IOS 5,似乎还有一些粒子系统http://www.raywenderlich.com/6063/uikit-particle-systems-in-ios-5-tutorial也支持添加剂混合(并且我怀疑这种混合是在CPU上实现的)-因此,现在也许有一种使用添加剂(或其他种类)的方法显示UIView时的混合)]
iOS 7引入了一个称为CABackdropLayer的新类图层。背景层从层次结构中位于其下方的UIView获取其图像。这是Apple在“控制中心”,“通知中心”,“密码”,“拨号盘”等以及“霜/高斯模糊”视图中用于“刻录”和“叠加”效果的图层类型。
要使用这种类型的图层,请像这样子类化UIView...。
@interface MyBackdropView : UIView
@end
@implementation MyBackdropView
+ (Class)layerClass {
return [CABackdropLayer class];
}
也有一些私有API方法也可以将此功能添加到现有的UIViews中,但对于App Store来说并不安全。...>
UIView *blendedView = [[UIView alloc] initWithFrame:frame];
[blendedView _setDrawsAsBackdropLayerWithBlendMode:kCGBlendModeColorBurn];
您可以使用compositingFilter
: