【问题标题】:Create an mask on an UIView to colorise all UIImageView subviews in black and white在 UIView 上创建一个蒙版以将所有 UIImageView 子视图着色为黑白
【发布时间】:2014-07-10 07:16:23
【问题描述】:

我有一个 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];

但它不起作用。

有什么建议吗?

【问题讨论】:

    标签: ios objective-c uiview uiimageview mask


    【解决方案1】:

    不,您不能创建将图像转换为黑白的蒙版。

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

    您可以使用 inputIntensity 值为 0 1 的“CIColorMonochrome”滤镜,您可以使用“CIPhotoEffectMono”,或者您可以使用 inputSaturation 值为 0 的“Color Controls”滤镜。

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

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

    【讨论】:

    • 非常感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2019-12-16
    • 2014-01-07
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多