当应用程序进入后台时覆盖顶视图控制器

Nev*_*ani 1 ios swift

当应用程序进入后台时,我想在顶部视图控制器顶部的 xib 文件中放置一个模糊视图(以便可以对其进行自定义),以便用户在使用多任务处理时无法看到我的应用程序的内容。我该怎么做?我用根视图控制器尝试了很多东西,但没有用。我知道我需要使用这些委托方法,但我不确定如何获取顶视图控制器并在其上放置一个视图。我正在使用带有一堆导航控制器的标签栏控制器。

func applicationWillResignActive(_ application: UIApplication) {
}
Run Code Online (Sandbox Code Playgroud)

func applicationWillEnterForeground(_ application: UIApplication) {
}
Run Code Online (Sandbox Code Playgroud)

当应用程序再次打开时,我显然想摆脱那种模糊的视图,但我也想使用 Face/Touch ID 来提供访问权限。我认为使用 LocalAuthentication 非常简单。

Bap*_*tya 9

AppDelegate.swift课堂上,请试试这个代码片段,

let visualEffectView = UIVisualEffectView()

func applicationWillEnterForeground(_ application: UIApplication) {
    self.visualEffectView.removeFromSuperview()
}

func applicationWillResignActive(_ application: UIApplication) {
if !self.visualEffectView.isDescendant(of: self.window!) {
    let blurEffect = UIBlurEffect(style: .light)
    self.visualEffectView = UIVisualEffectView(effect: blurEffect)
    self.visualEffectView.frame = (self.window?.bounds)!
    self.window?.addSubview(self.visualEffectView)
   }
}
func applicationDidBecomeActive(_ application: UIApplication) {
    self.visualEffectView.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud)

是的,你是正确的左右Face ID/Touch ID使用LocalAuthentication,您可能需要使用UIApplicationWillEnterForegroundNotification来检测,如果应用程序来到前台,并相应地显示验证警告。我认为您需要将此行为添加到您的ViewController.