3

用户是否可以在他们希望裁剪到的位周围画一条虚线(圆圈)UIImageView,然后UIImageView调整到这些点的大小?这有点像 Photoshop 中的套索/选框效果:

在此处输入图像描述

4

2 回答 2

3

更新:从 iOS 8.x 开始, UIImageView 提供了一个maskView属性。只需准备一个带有一些不透明像素的图像,使用该蒙版图像创建另一个图像视图,并将此蒙版图像视图设置为 maskView。掩码图像中的不透明像素将是基础图像中显示的像素。

    UIImageView *maskView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"somemask"]];
    maskView.frame = imageView.bounds;
    imageView.maskView = maskView;
    // imageView will be masked by maskView

.

原始答案

有很多工作要做,但这里有一个高级大纲:

  1. 创建一个将成为蒙版的空图像
  2. 根据用户输入在该图像中构建路径
  3. 填充路径以将其变成蒙版
  4. 将遮罩应用到 imageview 的图像

创建图像:这里的一个简单想法是在您的项目中附带一张黑色图像。它的大小应与用户可以选择的最大区域相匹配。将图像读入内存 ( UIImage imageNamed:) 并通过调用将其设置为绘图上下文UIGraphicsBeginImageContext

创建路径:(参见苹果文档)。当用户开始抚摸该区域时,调用CGContextBeginPath,然后跟随用户手势,对触摸进行采样并通过CGContextMoveToPoint重复调用 touchesMoved 添加小片段。

创建蒙版:要将路径变成蒙版,您需要黑色背景和白色填充路径。如果您从黑色图像开始,您只需要进行填充。请参阅有关执行此操作的相同苹果指南。

最后,你将把这个遮罩应用到你的 imageView 的图像上。 这是一个不错的参考

于 2012-10-22T16:55:02.843 回答
0

我想这只是你问题的一部分,但这里有一个关于如何绘制虚线和动画虚线的例子(即行军蚂蚁效应)。

于 2012-10-22T17:16:10.933 回答