mirror of
https://github.com/mssun/passforios.git
synced 2026-02-27 18:24:03 +01:00
56 lines
1.6 KiB
Swift
56 lines
1.6 KiB
Swift
//
|
|
// PasscodeLockPresenter.swift
|
|
// passKit
|
|
//
|
|
// Created by Yishi Lin on 10/04/2018.
|
|
// Copyright © 2018 Yishi Lin. All rights reserved.
|
|
//
|
|
// Inspired by SwiftPasscodeLock created by Yanko Dimitrov.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
open class PasscodeLockPresenter {
|
|
private var mainWindow: UIWindow?
|
|
private var passcodeLockWindow: UIWindow?
|
|
|
|
public init(mainWindow window: UIWindow?) {
|
|
self.mainWindow = window
|
|
}
|
|
|
|
open func present(windowLevel: CGFloat?) {
|
|
guard PasscodeLock.shared.hasPasscode else {
|
|
return
|
|
}
|
|
|
|
// dismiss the original window
|
|
dismiss()
|
|
|
|
// new window
|
|
mainWindow?.endEditing(true)
|
|
passcodeLockWindow = UIWindow(frame: mainWindow!.frame)
|
|
moveWindowsToFront(windowLevel: windowLevel)
|
|
passcodeLockWindow?.isHidden = false
|
|
|
|
// new vc
|
|
let passcodeLockVC = PasscodeLockViewController()
|
|
let userDismissCompletionCallback = passcodeLockVC.dismissCompletionCallback
|
|
passcodeLockVC.dismissCompletionCallback = { [weak self] in
|
|
userDismissCompletionCallback?()
|
|
self?.dismiss()
|
|
}
|
|
passcodeLockWindow?.rootViewController = passcodeLockVC
|
|
}
|
|
|
|
open func dismiss() {
|
|
passcodeLockWindow?.isHidden = true
|
|
passcodeLockWindow?.rootViewController = nil
|
|
}
|
|
|
|
private func moveWindowsToFront(windowLevel: CGFloat?) {
|
|
let windowLevel = windowLevel ?? UIWindow.Level.normal.rawValue
|
|
let maxWinLevel = max(windowLevel, UIWindow.Level.normal.rawValue)
|
|
passcodeLockWindow?.windowLevel = UIWindow.Level(rawValue: maxWinLevel + 1)
|
|
}
|
|
}
|