思路就是 在app keywindow上面增加一个带滤镜的图层
核心就是layer的 compositingFilter 属性
import UIKit
@objcMembers class AppGrayView: UIView {
class func showGrayView() {
guard #available(iOS 12.0, *) else {
return
}
let topWindow = AppCommon.appKeyWindow
let grayView = AppGrayView.init(frame: topWindow.bounds)
grayView.isUserInteractionEnabled = false
grayView.backgroundColor = .gray
grayView.layer.compositingFilter = "saturationBlendMode"
grayView.layer.zPosition = CGFLOAT_MAX
topWindow.addSubview(grayView)
}
class func removeGrayView() {
let topWindow = AppCommon.appKeyWindow
var subViewArr: [UIView] = NSMutableArray.init(array: topWindow.subviews) as! [UIView]
for subView in subViewArr {
if (subView.isKind(of: AppGrayView.self)) {
subView.removeFromSuperview()
}
};
}
}
网友评论