40 lines
1.3 KiB
Swift
40 lines
1.3 KiB
Swift
import UIKit
|
|
|
|
extension UIWindow {
|
|
public func t_makeKeyAndVisible() {
|
|
if #available(iOS 13.0, *) {
|
|
for windowScene in UIApplication.shared.connectedScenes {
|
|
if windowScene.activationState == UIScene.ActivationState.foregroundActive ||
|
|
windowScene.activationState == UIScene.ActivationState.background {
|
|
self.windowScene = windowScene as? UIWindowScene
|
|
break
|
|
}
|
|
}
|
|
}
|
|
self.makeKeyAndVisible()
|
|
}
|
|
|
|
static func getKeyWindow() -> UIWindow? {
|
|
var keyWindow: UIWindow?
|
|
if #available(iOS 13, *) {
|
|
keyWindow = UIApplication.shared.connectedScenes
|
|
.filter({ $0.activationState == .foregroundActive })
|
|
.compactMap { $0 as? UIWindowScene }
|
|
.flatMap { $0.windows }
|
|
.first(where: { $0.isKeyWindow })
|
|
} else {
|
|
keyWindow = UIApplication.shared.keyWindow
|
|
}
|
|
return keyWindow
|
|
}
|
|
|
|
static func getTopFullscreenWindow() -> UIWindow? {
|
|
let topWindow = UIApplication.shared.windows
|
|
.filter { !$0.isHidden && $0.bounds.equalTo(UIScreen.main.bounds) }
|
|
.max(by: { $0.windowLevel.rawValue < $1.windowLevel.rawValue })
|
|
|
|
return topWindow
|
|
}
|
|
|
|
}
|