如何掩盖UIView以突出显示选择?

时间:2012-03-13 19:22:33

标签: ios uiview

我面临的问题很简单(并且不像问题本身那么抽象)。我正在寻找一种解决方案来突出图像区域(选择),而图像的其余部分则褪色或变灰。您可以将效果与您在其中看到的界面进行比较,例如,裁剪图像时的Photoshop。图像显示为灰色,将要裁剪的区域清晰。

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

1 个答案:

答案 0 :(得分: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,将蒙面图像设置为图像,并将其添加到原始视图的顶部。您也可以根据自己的喜好设置此backgroundColor的{​​{1}}。

编辑:

更简单的方法可能是使用UIImageView,这是一个可选图层,其alpha通道用作遮罩,用于在图层的背景和合成图层内容及其过滤背景的结果之间进行选择。 (来自CALayer类参考)

一些文献:

UIView Class Reference

CALayer Class Reference

一个简单的例子,如何使用(可能隐藏)另一个UIView制作掩码:

Masking a UIView