2012-03-13 68 views
3

我面临的问题很简单(也比问题本身更抽象)。我正在寻找一种解决方案来突出显示图像区域(选区),而图像的其他部分会变淡或变灰。您可以将效果与您看到的界面进行比较,例如,裁剪图像时使用Photoshop。图像变灰,并且将被裁剪的区域清晰。如何掩盖UIView以突出显示选择?

我最初的想法是为此使用掩蔽(因此是问题),但我不确定这是否可行,如果是的话,如何继续。

回答

3

不知道这是否是最好的方法,但它应该工作。

首先,您创建视图的屏幕截图。

UIGraphicsBeginImageContextWithOptions(captureView.bounds.size, view.opaque, 0.0); 
[captureView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

这个片段被“窃取”,从这里略作修改: Low quality of capture view context on iPad

然后,你可以创建相同的尺寸,原始(截图)的灰度掩模图像。

按照清除&简单说明How to Mask an Image

然后,您创建UIImageView,将遮罩的图像设置为图像并将其添加到原始视图的顶部。您也可以根据自己的喜好设置此UIImageViewbackgroundColor

编辑:

更简单的方法可能会被使用view.layer.mask,这是“任选的层,其alpha通道被用作掩模层的背景和其过滤的合成层的内容的结果之间进行选择背景。” (从CALayer的类引用)

一些文献:

Masking a UIView

UIView Class Reference

CALayer Class Reference

和一个简单的例子,如何屏蔽可以与(可能是隐藏的)另一个的UIView制成