如何将UIImageView裁剪为自定义形状

时间:2012-10-22 16:28:21

标签: iphone objective-c ios xcode uiimageview

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

enter image description here

2 个答案:

答案 0 :(得分: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的图像
  5. 创建图像:这里一个简单的想法是只为您的项目发送黑色图像。它的大小应与用户可以选择的最大区域相匹配。将图像读入内存(UIImage imageNamed:)并通过调用UIGraphicsBeginImageContext将其设置为绘图上下文。

    创建路径:(see apple docs)。当用户开始抚摸该区域时,请拨打CGContextBeginPath,然后按照用户手势,对触摸进行抽样,并通过重复调用CGContextMoveToPoint作为touchesMoved来添加小段。

    创建遮罩:要将路径转换为遮罩,您需要黑色背景和填充白色的路径。如果你开始使用黑色图像,则只需要填充。请参阅相同的苹果指南。

    最后,您将此蒙版应用于imageView的图像。 Here's a decent reference为此。

答案 1 :(得分:0)

这回答了我想问的问题的一部分,但这里有关于如何绘制和动画虚线的example(即行进蚂蚁效果)。