iOS 进入后台脱敏操作

155 阅读1分钟

实现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()
    }