如何裁剪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
。
原始答复
有很多事情要做,但这是一个高层次的概述:
- 创build一个空的图像,这将成为一个面具
- 从用户input中构build该图像的path
- 填补path把它变成一个面具
- 将蒙版应用到imageview的图像
创build图像:这里有一个简单的想法,就是在项目中发送一个黑色的图像。 它的大小应该与用户可以select的最大区域相匹配。 将图像读入内存( UIImage imageNamed:
并通过调用UIGraphicsBeginImageContext
将其设置为绘图上下文。
创buildpath:( 见苹果文档 )。 当用户开始抚摸区域时,调用CGContextBeginPath
,然后遵循用户手势,对touches进行采样,并通过重复调用CGContextMoveToPoint
作为touchesMoved来添加小段。
创build蒙版:要将path转换为蒙版,您需要一个黑色的背景和path填充白色。 如果您从黑色图像开始,只需要填充。 看到相同的苹果指南关于这样做。
最后,你将这个面具应用到你的imageView的图像。 这是一个体面的参考 。
这只是我想你的问题的一部分,但这里是一个例子 ,如何绘制和animation的虚线(即行军ant效果)。