【问题标题】:How to mask a UIView to highlight a selection?如何屏蔽 UIView 以突出显示选择?
【发布时间】:2012-03-13 19:22:33
【问题描述】:

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

我最初的想法是为此使用遮罩(因此提出了问题),但我不确定这是否是一种可行的方法,如果可行,如何进行。

【问题讨论】:

    标签: ios uiview


    【解决方案1】:

    不确定这是否是最好的方法,但应该可以。

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

    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,将蒙版图像设置为其图像并将其添加到原始视图的顶部。您可能还想根据自己的喜好设置此UIImageViewbackgroundColor

    编辑:

    更简单的方法可能是使用view.layer.mask,它是“一个可选图层,其 Alpha 通道用作遮罩,用于在图层背景和图层内容与其过滤背景合成的结果之间进行选择。” (来自 CALayer 类参考)

    一些文献:

    UIView Class Reference

    CALayer Class Reference

    还有一个简单的例子,如何使用(可能隐藏)另一个 UIView 制作蒙版:

    Masking a UIView

    【讨论】:

      猜你喜欢
      • 2011-03-04
      • 2011-10-11
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 2015-12-12
      • 2011-07-24
      相关资源
      最近更新 更多