使用objective c触摸移动时如何去除灰色效果
How to remove gray color effect when touch move using objective c
我在加载时将图像转换为全灰色,但我想在触摸移动和查看原始图像颜色时从中移除灰色。
我想知道当用户在图像上移动手指时如何从灰色效果转换为原始图像以及从原始图像转换为灰色。
我的解决方案如下。
您需要两个 UIImageView。添加一个在另一个上,使它们逐像素重叠。您有两个选择:
- 前景黑白
- 前景颜色
两种解决方案基本相同。您需要在最顶层视图上使用遮罩。使用遮罩层,白色区域将完全不透明,黑色区域 100% 透明,灰色区域半透明。
掩码示例:
CALayer *maskLayer = [CALayer layer];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
maskLayer.contents = (id)mask.CGImage;
maskLayer.bounds = (CGRect){CGPointZero, mask.size};
UIImageView *viewToMask = ;
viewToMask.image = [UIImage imageNamed:@"blackandwhite.png"];
viewToMask.layer.mask = maskLayer;
[self.view addSubview:viewToMask];
当然你必须 add/remove touch/release 上的面具。我留给你。
现在当你移动手指时会发生什么?只需将蒙版移动到不同的位置,如下所示:
viewToMask.layer.mask.position = offset position based on touch position
希望能帮到你
我在加载时将图像转换为全灰色,但我想在触摸移动和查看原始图像颜色时从中移除灰色。
我想知道当用户在图像上移动手指时如何从灰色效果转换为原始图像以及从原始图像转换为灰色。
我的解决方案如下。
您需要两个 UIImageView。添加一个在另一个上,使它们逐像素重叠。您有两个选择:
- 前景黑白
- 前景颜色
两种解决方案基本相同。您需要在最顶层视图上使用遮罩。使用遮罩层,白色区域将完全不透明,黑色区域 100% 透明,灰色区域半透明。
掩码示例:
CALayer *maskLayer = [CALayer layer];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
maskLayer.contents = (id)mask.CGImage;
maskLayer.bounds = (CGRect){CGPointZero, mask.size};
UIImageView *viewToMask = ;
viewToMask.image = [UIImage imageNamed:@"blackandwhite.png"];
viewToMask.layer.mask = maskLayer;
[self.view addSubview:viewToMask];
当然你必须 add/remove touch/release 上的面具。我留给你。
现在当你移动手指时会发生什么?只需将蒙版移动到不同的位置,如下所示:
viewToMask.layer.mask.position = offset position based on touch position
希望能帮到你