在UIView上创建一个蒙版,以黑色和白色为所有UIImageView子视图着色

时间:2014-05-21 14:49:00

标签: ios objective-c uiview uiimageview mask

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

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

我想在我的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 UIView为container UIView着色。

[_frieze.container addSubview:myImageView];

_frieze.mask.layer.backgroundColor = [[UIColor grayColor] CGColor];
_frieze.mask.backgroundColor = [UIColor grayColor];

但它没有用。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

不,你不能创建一个将图像转换为B& W的掩码。

您可以做的是编写使用核心图像过滤器将图像转换为B& W的代码。

您可以使用" CIColorMonochrome"使用inputIntensity值0 1进行过滤,您可以使用" CIPhotoEffectMono",或者您可以使用"颜色控制"使用inputSaturation值为0进行过滤。

你可以创造一个" MonochromeImage" UIImageView的子类,它将图像作为输入并将其转换为单色等效项以进行显示。

我在github上有一个名为CIFilterTest(链接)的示例项目,它允许您使用所有这些过滤器等。它应该为您提供足够的信息以便开始。