在主故事板顶部呈现锁定屏幕
Presenting lock screen on top of main storyboard
当用户从 didFinishLaunchingWithOptions
或 applicationWillEnterForeground
进入应用程序时,我想显示锁定屏幕。
我在另一个故事板上设置了锁定屏幕,而不是在主故事板上。
如果我实例化锁屏故事板然后移动到主故事板,应用程序将不会保持用户离开应用程序时与使用 applicationWillEnterForeground
进入应用程序时相同的状态。
因此,如果用户在特定的视图控制器中,然后离开应用程序并使用 applicationWillEnterForeground
再次进入,故事板将被实例化为锁屏故事板,一旦用户解锁屏幕,他将被重定向到主故事板的 rootViewController
,而不是他之前所在的视图控制器。
主故事板以 UITabBarController 开始。
你是如何克服这个问题的?
if let lockedViewController = UIStoryboard(name: "Locked", bundle: .main).instantiateInitialViewController() {
window?.rootViewController = lockedViewController
window?.makeKeyAndVisible()
}
锁屏故事板:
谢谢
只需创建 UIWindow
的新实例并在您的 appdelegate 中保留引用。
在前台转换时创建新的 window 并在解锁时释放 window
private var lockWindow:UIWindow?
func createNewWindow() {
lockWindow = UIWindow(frame: UIScreen.main.bounds)
lockWindow!.rootViewController = UIStoryboard(name: "Locked", bundle: .main).instantiateInitialViewController()
lockWindow!.windowLevel = UIWindow.Level.alert + 1;
lockWindow!.isHidden = false
}
func releaseWindow() {
self.lockWindow?.isHidden = true
self.lockWindow = nil
}
当用户从 didFinishLaunchingWithOptions
或 applicationWillEnterForeground
进入应用程序时,我想显示锁定屏幕。
我在另一个故事板上设置了锁定屏幕,而不是在主故事板上。
如果我实例化锁屏故事板然后移动到主故事板,应用程序将不会保持用户离开应用程序时与使用 applicationWillEnterForeground
进入应用程序时相同的状态。
因此,如果用户在特定的视图控制器中,然后离开应用程序并使用 applicationWillEnterForeground
再次进入,故事板将被实例化为锁屏故事板,一旦用户解锁屏幕,他将被重定向到主故事板的 rootViewController
,而不是他之前所在的视图控制器。
主故事板以 UITabBarController 开始。
你是如何克服这个问题的?
if let lockedViewController = UIStoryboard(name: "Locked", bundle: .main).instantiateInitialViewController() {
window?.rootViewController = lockedViewController
window?.makeKeyAndVisible()
}
锁屏故事板:
谢谢
只需创建 UIWindow
的新实例并在您的 appdelegate 中保留引用。
在前台转换时创建新的 window 并在解锁时释放 window
private var lockWindow:UIWindow?
func createNewWindow() {
lockWindow = UIWindow(frame: UIScreen.main.bounds)
lockWindow!.rootViewController = UIStoryboard(name: "Locked", bundle: .main).instantiateInitialViewController()
lockWindow!.windowLevel = UIWindow.Level.alert + 1;
lockWindow!.isHidden = false
}
func releaseWindow() {
self.lockWindow?.isHidden = true
self.lockWindow = nil
}