ios - 将所有内容更改为黑白(应用混合以查看背景颜色)

标签 ios swift core-graphics

结果:

enter image description here

弹出警告框的中间图像是我想要实现的结果。

当弹出一个警告框时,一切都变成了黑白。在设计中实现这一点的方法是在顶部添加一个图层,背景颜色为黑色,混合模式为色调。

因此,为了实现这一点,我尝试了以下方法。

我试图在顶部添加一个 View (透明背景)。在该 View 中,我绘制了一个具有混合模式色调的矩形。

override func draw(_ rect: CGRect) {
  let context = UIGraphicsGetCurrentContext()
  UIColor.black.setFill()
  context?.setBlendMode(.hue)

  let rect = rect
  context?.addRect(rect)
  context?.drawPath(using: .fillStroke)
}

UIView 具有设置为全屏的约束。然而,这只会产生一个黑色矩形。

关于如何实现这一目标的任何提示?

最佳答案

View 背后 没有混合模式这样的东西。混合模式是关于将绘制到这个上下文中。

要实现您所描述的内容,您必须拍摄当前 View Controller View 的快照并将其以黑白方式绘制到您的上下文中。

然而,通常的做法是设置 tintAdjustmentMode .这就是真正的警报 View 所做的。

关于ios - 将所有内容更改为黑白(应用混合以查看背景颜色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50723925/

相关文章:

ios - 使用自定义UIPopoverBackgroundView仅更改UIPopoverController中的边框颜色

ios - 了解 CATransform3D 围绕所有三个轴的旋转

swift - 表解析查询不出现

iphone - 添加 CAGradientLayer 子层时,UITableViewCell 不会拾取 UITableViewCellSelectionStyleBlue

ios - CoreGraphics 和 CGI​​mageCreateWithImageInRect 的方向和原点

iphone - CGContextDrawImage 崩溃

ios - iOS 如何调用委托(delegate)和数据源方法?

ios - 在 HTTP 方法中使用 POST 请求保存 UI?

ios - SafeArea 向后兼容性

ios - 关闭从模态呈现的 View Controller 翻转的 View Controller