实现APP 进入后台的时候进行模糊处理
原理就是在APP进入后台的时候给window上添加一层遮罩,在APP将要回到前台的时候对遮罩进行移除。
在AppDelegate.swift中,添加遮罩属性:
lazy var visualEffectView: UIVisualEffectView = {
let blur = UIBlurEffect.init(style: UIBlurEffect.Style.light)
let view = UIVisualEffectView.init(effect: blur)
view.frame = UIScreen.main.bounds
return view
}()
在APP将要进入后台的时候添加遮罩层
func applicationWillResignActive(_ application: UIApplication) {
window?.addSubview(self.visualEffectView)
}
在APP将要激活进入前台的时候移除遮罩层
func applicationDidBecomeActive(_ application: UIApplication) {
self.visualEffectView.removeFromSuperview()
}
也可以这样操作
在APP的跟视图注册进入后台和将要进入前台的通知
NotificationCenter.default.addObserver(self,
selector: #selector(applicationDidBecomeActive),
name: UIApplication.didBecomeActiveNotification,
object: nil)
NotificationCenter.default.addObserver(self,
selector: #selector(applicationWillResignActive),
name: UIApplication.willResignActiveNotification,
object: nil)
然后再对应的事件里面处理添加遮罩层和移除遮罩层的操作
@objc func applicationWillResignActive(notification: NSNotification) {
// 进入后台
view.addSubview(self.visualEffectView)
}
@objc func applicationDidBecomeActive(notification: NSNotification) {
// 进入前台
self.visualEffectView.removeFromSuperview()
}