Ios 在UIView上创建遮罩,以黑白显示所有UIImageView子视图

Ios 在UIView上创建遮罩,以黑白显示所有UIImageView子视图,ios,objective-c,uiview,uiimageview,mask,Ios,Objective C,Uiview,Uiimageview,Mask,我有一个UIView,其中包含UIImagesView,其中包含从远程服务器加载的图像 从服务器加载的图像是彩色的 我想在我的UIView上创建一个遮罩,将其所有内容(包括图像)以黑白显示 但我不想在每张照片准备好的时候都戴上面具 我试图创建UIView的子类: @interface FriezeView : UIView @property (nonatomic, strong) UIView *mask; @property (nonatomic, strong) UIView *cont

我有一个UIView,其中包含UIImagesView,其中包含从远程服务器加载的图像

从服务器加载的图像是彩色的

我想在我的UIView上创建一个遮罩,将其所有内容(包括图像)以黑白显示

但我不想在每张照片准备好的时候都戴上面具

我试图创建
UIView
的子类:

@interface FriezeView : UIView

@property (nonatomic, strong) UIView *mask;
@property (nonatomic, strong) UIView *container;

@end
此类的init方法:

- (id)initWithFrame:(CGRect)frame
{
    if ((self = [super initWithFrame:frame]))
    {
        self.container = [[UIView alloc] initWithFrame:frame];
        self.mask = [[UIView alloc] initWithFrame:frame];

        [self addSubview:self.container];
        [self addSubview:self.mask];
    }

    return self;
}
然后我使用
mask
ui视图为
容器
ui视图着色

[_frieze.container addSubview:myImageView];

_frieze.mask.layer.backgroundColor = [[UIColor grayColor] CGColor];
_frieze.mask.backgroundColor = [UIColor grayColor];
但它不起作用


有什么建议吗

不,您不能创建将图像转换为黑白的遮罩

您可以编写代码,使用核心图像过滤器将图像转换为黑白图像

您可以使用InputTensity值为0 1的“CIColorMonochrome”过滤器,也可以使用“CIPhotoEffectMono”,或者使用inputSaturation值为0的“颜色控制”过滤器

您可以创建UIImageView的“单色图像”子类,将图像作为输入,并将其转换为单色等价物进行显示


我在github上有一个名为(link)的示例项目,它允许您使用所有这些过滤器以及更多。它应该为您提供足够的信息,让您可以开始使用。

非常感谢您的回答!