2012-10-22 29 views
2

用户是否可以围绕想要裁切的UIImageView的位绘制虚线(围成一圈),然后再将UIImageView调整为这些点的大小?这是一个有点像Photoshop中的套索/选取框效果:如何将UIImageView裁切为自定义形状

enter image description here

+0

啊,那我怎么能做到这一点?我怎样才能使选框外的位透明?那么首先,我想我的问题是 - 我怎样才能从图纸中获得选取框内部的CGRect?我目前有一个用CGContext设置的UIKit图形视图等。 –

+0

谢谢@NSPostWhenIdle! –

回答

3

更新:由于iOS的8.x中的UIImageView提供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将其设置为绘图上下文。

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

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

最后,你将这个面具应用到你的imageView的图像。 Here's a decent reference

+0

嗨,先生,请帮助我我的项目脸形状图像作物尝试许多图书馆,但不完美的图像作物让我知道任何想法.. –

+0

@RamaniHitesh - 答案是有点过时了。看看改进的技术是否有助于你。 – danh

+0

好吧,先生,不要担心...任何想法,请建议我 –

0

这只回答你的问题的一部分,我想,但这里是一个example如何绘制和动画虚线(即行军蚂蚁效果)。