【问题标题】:How to remove gray color effect when touch move using objective c使用objective c触摸移动时如何消除灰色效果
【发布时间】:2015-10-27 15:05:37
【问题描述】:

我在加载时将图像转换为全灰色,但我想在触摸移动并查看原始图像颜色时从中删除灰色。

我想知道当用户在图像上移动手指时如何将灰色效果转换为原始图像以及从原始图像转换为灰色。

【问题讨论】:

  • 我相信您将原始图像存储在内存中。我会做些什么来添加两个重叠的 UIImageViews。最上面的是彩色的,完全透明的。然后在 touchDown 事件中,我会在几分之一秒内制作一个简短的动画,以将其 alpha 增加到 1.0。在 touchUp 事件中反转它。
  • 你能给我示例代码以便我理解吗?
  • 我只想添加原始颜色,仅在触摸移动其余全部为灰色的地方。
  • 所以你有想法在你触摸它的区域有一个“圆圈”来着色吗?或者您想让整张照片在触摸时上色?
  • 一个“圆圈”将在您触摸的区域着色

标签: ios iphone colors uiimage


【解决方案1】:

我的解决方案如下。

你需要两个 UIImageViews。一个接一个地相加,使它们逐个像素地重叠。你有两个选择:

  1. 前景中的黑白
  2. 前景颜色

两种解决方案基本相同。您需要在最顶层视图上使用遮罩。使用遮罩层后,白色区域将完全不透明,黑色 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];

当然,您必须在触摸/释放时添加/移除遮罩。我把它留给你。

现在,当您移动手指时会发生什么?只需将面具移动到不同的位置,如下所示:

viewToMask.layer.mask.position = offset position based on touch position

希望能帮到你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多