该方式只适用于iOS12之上,由于我们公司的项目都是iOS12之上的,所以不需要考虑iOS12之下的系统
创建一个view,不响应事件
class MLGrayView : UIView {
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
return nil
}
}
在基类中创建一个函数,用以后续调用:
func showGrayViewWithSuperView(_ superView:UIView) {
let overlay = MLGrayView(frame: superView.bounds)
overlay.isUserInteractionEnabled = false
overlay.translatesAutoresizingMaskIntoConstraints = false
overlay.backgroundColor = .gray
overlay.layer.compositingFilter = "saturationBlendMode"
superView.addSubview(overlay)
superView.bringSubviewToFront(overlay)
}
然后就可以在需要使用到的页面上使用这个了