MoviaBox/ShortPlay/Libs/APPTool/SPAPPTool.swift
2025-04-09 18:24:58 +08:00

94 lines
2.7 KiB
Swift

//
// SPAPPTool.swift
// ShortPlay
//
// Created by on 2025/4/9.
//
import UIKit
class SPAPPTool: NSObject {
static func getAppDelegate() -> AppDelegate? {
return UIApplication.shared.delegate as? AppDelegate
}
///
static func getLanuchViewController() -> UIViewController {
let storyboard = UIStoryboard(name: "LaunchScreen", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "LaunchScreen")
return vc
}
///
static func rootViewController() -> UIViewController? {
return getKeyWindow()?.rootViewController
}
///
static func topViewController() -> UIViewController? {
var resultVC: UIViewController? = self.rootViewController()
if let rootNav = resultVC as? UINavigationController {
resultVC = rootNav.topViewController
}
resultVC = self._topViewController(resultVC)
while resultVC?.presentedViewController != nil {
resultVC = self._topViewController(resultVC?.presentedViewController)
}
return resultVC
}
private static func _topViewController(_ vc: UIViewController?) -> UIViewController? {
if vc is UINavigationController {
return _topViewController((vc as? UINavigationController)?.topViewController)
} else if vc is UITabBarController {
return _topViewController((vc as? UITabBarController)?.selectedViewController)
} else {
return vc
}
}
static func getKeyWindow() -> UIWindow? {
var window: UIWindow?
if #available(iOS 13.0, *) {
window = UIApplication.shared.connectedScenes
.filter({$0.activationState == .foregroundActive})
.map({$0 as? UIWindowScene})
.compactMap({$0})
.first?.windows
.filter({$0.isKeyWindow}).first
}
if window == nil {
window = UIApplication.shared.windows.first { $0.isKeyWindow }
}
if window == nil {
window = UIApplication.shared.keyWindow
}
return window
}
}
extension SPAPPTool {
///
static func copy(text: String?) {
if let text = text {
let copy = UIPasteboard.general
copy.string = text
}
}
/**
*/
static func impactFeedbackOccurred() {
if #available(iOS 13.0, *) {
UIImpactFeedbackGenerator(style: .heavy).impactOccurred(intensity: 1)
} else {
UIImpactFeedbackGenerator(style: .heavy).impactOccurred()
}
}
}