如何裁剪UIImageView到自定义形状

用户是否可以在他们希望裁剪的UIImageView的位周围绘制一条虚线(围成一圈),然后让UIImageView调整到这些点的位置? 这有点像Photoshop中的套索/字幕效果:

在这里输入图像说明

更新:自iOS 8.x以来,UIImageView提供了一个maskView属性。 只需准备一些不透明像素的图像,使用该遮罩图像创build另一个图像视图,并将该遮罩图像视图设置为遮罩视图。 蒙版图像中的不透明像素将显示在底层图像中。

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

原始答复

有很多事情要做,但这是一个高层次的概述:

  1. 创build一个空的图像,这将成为一个面具
  2. 从用户input中构build该图像的path
  3. 填补path把它变成一个面具
  4. 将蒙版应用到imageview的图像

创build图像:这里有一个简单的想法,就是在项目中发送一个黑色的图像。 它的大小应该与用户可以select的最大区域相匹配。 将图像读入内存( UIImage imageNamed:并通过调用UIGraphicsBeginImageContext将其设置为绘图上下文。

创buildpath:( 见苹果文档 )。 当用户开始抚摸区域时,调用CGContextBeginPath ,然后遵循用户手势,对touches进行采样,并通过重复调用CGContextMoveToPoint作为touchesMoved来添加小段。

创build蒙版:要将path转换为蒙版,您需要一个黑色的背景和path填充白色。 如果您从黑色图像开始,只需要填充。 看到相同的苹果指南关于这样做。

最后,你将这个面具应用到你的imageView的图像。 这是一个体面的参考 。

这只是我想你的问题的一部分,但这里是一个例子 ,如何绘制和animation的虚线(即行军ant效果)。