【发布时间】:2012-03-13 19:22:33
【问题描述】:
我面临的问题很简单(并且没有问题本身那么抽象)。我正在寻找一种解决方案来突出图像的某个区域(选择),而图像的其余部分则淡出或变灰。您可以将效果与您在裁剪图像时看到的界面(例如 Photoshop)进行比较。图像变灰,要裁剪的区域清晰。
我最初的想法是为此使用遮罩(因此提出了问题),但我不确定这是否是一种可行的方法,如果可行,如何进行。
【问题讨论】:
我面临的问题很简单(并且没有问题本身那么抽象)。我正在寻找一种解决方案来突出图像的某个区域(选择),而图像的其余部分则淡出或变灰。您可以将效果与您在裁剪图像时看到的界面(例如 Photoshop)进行比较。图像变灰,要裁剪的区域清晰。
我最初的想法是为此使用遮罩(因此提出了问题),但我不确定这是否是一种可行的方法,如果可行,如何进行。
【问题讨论】:
不确定这是否是最好的方法,但应该可以。
首先,创建视图的屏幕截图。
UIGraphicsBeginImageContextWithOptions(captureView.bounds.size, view.opaque, 0.0);
[captureView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
这个 sn-p 是“偷来的”,并在此处稍作修改: Low quality of capture view context on iPad
然后您可以创建与原始尺寸相同的灰度蒙版图像(屏幕截图)。
按照How to Mask an Image 上清晰简单的说明进行操作。
然后您创建UIImageView,将蒙版图像设置为其图像并将其添加到原始视图的顶部。您可能还想根据自己的喜好设置此UIImageView 的backgroundColor。
编辑:
更简单的方法可能是使用view.layer.mask,它是“一个可选图层,其 Alpha 通道用作遮罩,用于在图层背景和图层内容与其过滤背景合成的结果之间进行选择。” (来自 CALayer 类参考)
一些文献:
还有一个简单的例子,如何使用(可能隐藏)另一个 UIView 制作蒙版:
【讨论】: