use*_*931 5 blending opengl-es uikit ios
以前曾有人问过这个问题,但我还没有找到满意的答案。难道真的没有办法为UIView设置混合模式(即使用GPU合成来实现混合)吗?
有一些使用 CGContextSetBlendMode 的建议,如下所示:在不使用 OpenGL 的情况下以加法混合模式绘制图像,但到目前为止我偶然发现的所有这些解决方案似乎都使用绘图例程,据我所知(并且据我的性能测量暗示)这将在 CPU 上进行混合(然后才将其上传到 OpenGL 纹理进行显示)。
但据我所知,UIKit 使用 OpenGL 来呈现底层 CALayers,因此使用单独的混合模式应该是世界上最简单的事情。
自 IOS 5 以来,似乎还有一些粒子系统http://www.raywenderlich.com/6063/uikit-article-systems-in-ios-5-tutorial也支持添加混合(我怀疑这种混合是否已实现)在 CPU 上) - 那么现在是否有一种方法可以在显示 UIView 时使用附加(或其他类型)混合?
小智 1
iOS 7 引入了一个新的 Layer 类,称为 CABackdropLayer。背景层从层次结构中位于其下方的 UIView 获取其图像。这是 Apple 在控制中心、通知中心、密码、拨号盘等中用于加深和叠加效果以及霜冻/高斯模糊视图的图层类型。
要使用这种类型的图层,请像这样子类化 UIView......
@interface MyBackdropView : UIView
@end
@implementation MyBackdropView
+ (Class)layerClass {
return [CABackdropLayer class];
}
Run Code Online (Sandbox Code Playgroud)
有一些私有 API 方法可以将此功能添加到现有的 UIViews 中,但它们对于 App Store 来说并不安全......
UIView *blendedView = [[UIView alloc] initWithFrame:frame];
[blendedView _setDrawsAsBackdropLayerWithBlendMode:kCGBlendModeColorBurn];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1593 次 |
| 最近记录: |