我希望这是有道理的。我会试着解释一下。
我在屏幕上有一个 UIImageView,我想知道如何在用手指“绘制”后获取该区域,然后从 UImage 中删除该部分,或者从选择中创建一个单独的 UIImage。
我不是在寻找代码(除非你有它 =]),只是想知道如何去做。如果您有建议,我将不胜感激,谢谢。
我希望这是有道理的。我会试着解释一下。
我在屏幕上有一个 UIImageView,我想知道如何在用手指“绘制”后获取该区域,然后从 UImage 中删除该部分,或者从选择中创建一个单独的 UIImage。
我不是在寻找代码(除非你有它 =]),只是想知道如何去做。如果您有建议,我将不胜感激,谢谢。
所以基本上你想实现图像的徒手擦除?您将需要使用核心图形和各种 CGContext 方法(混合模式设置为清除)来实现这一点。有两种方法,但都从将图像绘制为的第一部分开始drawRect
,然后
1)将您的笔画存储在一个数组中,并将所有笔画都放在图像的顶部。
2)在图像上划一划,然后将生成的图像存储到UIImage
. 将此UIImage
用作您在 drawRect 中绘制的下一个图像。这对于撤消/重做功能很困难。
如果我理解你的问题,我想我会在 UIImageView 的顶部添加一个透明的 UIView 作为子视图。并以此为基础。然后,您可以在完成后删除/隐藏子视图。
你需要创建一个UIGestureRecognizer
with 目标和一个类似的动作-imageIsPressed
,在这个-imagePressed
方法中你可以调用一些东西来使图像消失。我建议将 UIImage 放入 UIImageView 并调用imageview.hidden = YES;
以隐藏图像,一旦手指没有握住它,就将其设置回“NO”。
您需要实现一些东西来捕获用户“选择”的区域(可能正在创建一个CGPath
。然后创建一个 imageView 大小的 CALayer。在其中创建、绘制并用一些任意颜色填充捕获的路径,同时让其余部分透明。最后,您将生成的 CALayer 作为蒙版应用到 UIImageView:
imageView.layer.mask = maskLayer;
希望这能让你开始。
有关如何绘制自定义 CALayer 的更多信息,请参阅Quartz Programming Guide